随笔分类 - LintCode
在LintCode中刷的算法题
摘要:题目描述: 分析:由样例可以知道,当数组的每一个数字都是9时,加一会产生一个最高位的数字1,所以先判断这个数组的每一位是否都是9,如果是,那么新数组的大小是原数组大小加一,否则新数组的大小等于原数组的大小。数字加一,其实也就是数组的最后一个数字加一,但是加一的时候可能会产生进位(9+1=10:就产生
阅读全文
摘要:题目描述: 分析:先建一个数组s用来存储每个字符串的长度,然后遍历数组s得到最大的数max,这个数就是词典中的最长单词的长度,由于可能有多个长度相等的单词,所以要循环整个词典,当一个单词的长度等于max时,就将它存到要返回的ArrayList中。 我的代码:
阅读全文
摘要:题目描述: 分析:题目的意思是把数组A和数组B合并到数组A中,且数组A有足够的空间容纳A和B的元素,合并后的数组依然是有序的。 我的代码:
阅读全文
摘要:题目描述: 分析:由样例可知,第二个参数表示要返回的字符串的最小长度,所以当给定字符串的长度小于规定字符串最小长度时就在左边填充空格,另外还有一个重载方法leftpad的第三个参数指定左边填充的字符。需要注意的是:只有但字符串长度小于规定的字符串最小长度时才需要左填充,否则,直接返回原字符串。 我的
阅读全文
摘要:题目描述: 分析:因为题目要求不能用循环,而且只给了要删除的节点,并没有给链表。所以我无法取得要删除节点的前一个节点,只能在待删除的节点以及下一个节点上做文章。我的思路是:将待删除的节点的下一个节点的值赋给待删除节点,然后让待删除的节点的next指向待删除节点的next的next。 我的代码:
阅读全文
摘要:题目描述: 分析:由于要使非零元素保持原数组的顺序,我只能想出在找到一个0时,逐个移动数组元素使得后一个元素覆盖前一个元素,再将这个0移到后头去。 我的代码:
阅读全文
摘要:题目描述: 我的思路: 由题目描述可知,题目是要求将第一个与第二个节点,第三个与第四节点....进行交换,而进行交换时只用将节点的值进行交换即可。需要注意的是:当链表为null或者当链表只有一个节点时就没有可进行交换的另一个节点,就可以直接将该链表返回。 我的代码: 以上面的例题为例:
阅读全文
摘要:题目描述: 分析:由题目可知这个数组不为空且该主元素一定存在,我选用HashMap来存储,HashMap的存储结构是”键—值对“,”键“用来存储数组元素,”值“用来存储这个元素出现的次数,然后循环遍历这个HashMap,当发现有一个”键“对应的”值“大于数组元素个数的二分之一时,将这个”键“返回。
阅读全文
摘要:题目描述: 我的分析:题目要求将奇数放在偶数的前面,没有要求将奇数或偶数排序,因此我可以设置两个指针,一个(i)指向数组第一个数字,另一个(j)指向数组的最后一个数字,因为奇数要放在前面,所以从后往前找奇数,从前往后找偶数,找到后将这两个数字进行交换,直到i == j。 我的代码:
阅读全文
摘要:题目描述: 我的代码: 总结:因为这是单链表,无法像双链表一样轻松的获得一个节点的前一个节点,所以,我就把这个单链表倒置,倒置后的单链表的第n个节点就是倒置前的单链表的倒数第n个节点,这样就能通过遍历获得倒数第n个节点了。
阅读全文
摘要:题目描述: 我的代码: 总结:因为链表是已经排好序的,所以相同的元素是在一起的。
阅读全文
摘要:题目描述: 我的代码: 总结:这道题我用了两个数组,其中数组a存放num的各位数字,然后将数组a从后至前赋值给数组c,此时数组a中的值得顺序与数组c中的值得顺序是相反的(例如:num=32,那么a=[3,2],c=[2,3]),如果该数是回文的话,那么这两个数组按相同的顺序从前往后读的值也应该是相同
阅读全文
摘要:题目描述: 我的代码: 总结:该题是LintCode中的一道入门题,我的思路是采用递归的思想获得左子树和右子树,然后将根节点的值与左子树和右子树的根节点的值相比较,值最大的节点赋值给根节点,然后返回根节点。
阅读全文
摘要:题目描述: 我的代码 总结:这道题是LintCode中的一道容易题,我用了一个栈的思想,把每次取得的num的各位数依次入栈,在依次出栈获得总和,把总和的值赋给num,当num为个位数时退出循环返回num。
阅读全文
摘要:题目描述 我的代码 结论:删除链表中的元素这一道题是LintCode中的一道入门题,以前写算法题的时候用的都是C语言写的,C语言中有指针这个概念,利用指针理解链表的结构就比较容易,但是这次我用的是Java,刚开始写的时候一脸蒙,转不过弯来。我的思路是新建一个头节点h,再把这个节点赋值给p,然后循环遍
阅读全文
摘要:冒泡排序: 冒泡算法是我学的第一种算法,也是很简单的一种算法。具体来说就是每次比较相邻的两个数,如果顺序错误就把他们交换过来。但是它的比较次数很多,时间复杂度为O(n2),这是一个非常高的时间复杂度,当需要比较的数字很多时,不推荐使用这种算法。 冒泡排序法需要使用两层for循环,第一层循环表示总共需
阅读全文

浙公网安备 33010602011771号