摘要:
题目: 思路: 先是说一说对这道题的理解吧,这题要么采用的是暴力破解方法,采用双循环的方式。 通过一层循环,决定起始位置,然后不断循环从起始位置加起用于存储最大值。 或者采用动态规划,寻找出规律F(N) = F(N-1) + A[N] 这种方法的时间复杂度为O(N),空间复杂度为O(N)。 代码示例 阅读全文
摘要:
题目: 思路: 先是说一说对这道题的理解吧,常规的容器的容量是由最短的边决定的,所以应该取左右两边的最短边减去底高就是容量,所以理想状态是将数组遍历一次,知道每一个低是否有容量,例如L与R是容器的两边,且L比R小,故L决定了容量,设X为容器底,则L-X,会出现两种情况,一是整数,则可以知道容量是多少 阅读全文
摘要:
题目: 思路: 先是说一说对这道题的理解吧,对于数字运算,我们大都知道int是存在范围的,long也是有范围的,但是当面对数值超出范围的时候我们要怎么应对,大概就是这题的一个知识点吧。 其次这题也很明显存在暴力破解的办法,就是将两个字符串的一位取出,进行转义相加,然后存在进位情况。依次处理最后达到了 阅读全文
摘要:
题目: 思路: 由于set和get方法的时间复杂度为O(1),这就代表着不好用循环,所以应该采用能一次性取出来的方式。如头尾这种方便存取,所以应该一边常用,一边不常用,整体来说,链表结构比较合适。 直接把每次操作的元素塞到链表最末端,这样最后一位就是最常用的,其次,还要想着如何便于一次性检验元素是否 阅读全文
摘要:
题目: 思路: * 通过哈希map的key-value的方式来进行甄别,时间与空间复杂度都为O(N) * 将每次检验过的值的补数存于map中key为补数,value存数组的index坐标 * 当新元素进入时,判断map的key中是否已经存在这个key了,如果存在,则将这个key对应的坐标拿出 * 并 阅读全文
摘要:
题目: 思路: 思路一:其实一看到这个题我们首先会想到递归,其中比较绕的就是 new_list = l1; new_list.next = mergeTwoLists2(l1.next, l2); 这点代码,原因是他取出一个值小的节点,并改变了他的下一位节点的指向。 如A->C->E与B->D->F 阅读全文
摘要:
题目: 思路: 思路一:由于是有序的链表,所以按一定的顺序,例如从小到大,这样的话,将第一个A节点的值存于一个变量temp之中,设第一个节点为A(head),第二个节点为B(head.next),第三个节点为C(head.next.next),这样如果B的值与A相同,则就是要去掉的,即head.ne 阅读全文