摘要:
想法: 1:先把nums2中的所有元素都放到nums1,之后给合并后的数组排序 1 官方代码: 2 class Solution { 3 public void merge(int[] nums1, int m, int[] nums2, int n) { 4 for (int i = 0; i !
阅读全文
posted @ 2022-08-01 14:09
Jolyne123
阅读(48)
推荐(0)
编辑
摘要:
想法: 1:遍历链表,每次判断节点是否被访问过。(哈希表) 2:快慢指针(看题解之后) 两个指针pq都在head头指针开始(初始化); 快指针每次走两步,慢指针每次走一步,如果存在环,那么两指针一定会相遇,如果不存在环,快指针一定一直在慢指针前面; 1 官方代码: 2 public class So
阅读全文
posted @ 2022-08-01 14:02
Jolyne123
阅读(77)
推荐(0)
编辑
摘要:
无法高效获取长度,无法根据偏移快速访问元素,是链表的两个劣势。然而面试的时候经常碰见诸如获取倒数第k个元素,获取中间位置的元素,判断链表是否存在环,判断环的长度等和长度与位置有关的问题。这些问题都可以通过灵活运用双指针来解决。 Tips:双指针并不是固定的公式,而是一种思维方式~ 倒数第k个元素的问
阅读全文
posted @ 2022-08-01 14:00
Jolyne123
阅读(21)
推荐(0)
编辑
摘要:
想法: 1.迭代 设两个指针pa和pb,不断移动pa和pb,并进行比较,则将较小元素接到新链表,该过程直至pa或pb为null,之后将未空的接到已空之后,得到升序链表 1 //官方: 2 class Solution { 3 public ListNode mergeTwoLists(ListNod
阅读全文
posted @ 2022-08-01 13:54
Jolyne123
阅读(87)
推荐(0)
编辑
摘要:
想法(没看解析之前想不出来) 看了解析和答案 1.贪心算法,若当前元素的之前和<0,则丢弃当前元素之前的数列 设一个maxSum作为子序列最大和,一个sum作为当前子序列求和,一个last作为当前元素的之前和;一个now指针遍历数组 now从0开始,每次判断last是否<=0,若小于,则说明加上了也
阅读全文
posted @ 2022-08-01 13:50
Jolyne123
阅读(58)
推荐(0)
编辑
摘要:
想法: 1.哈希表hashmap 第一种方法:将数组中元素及其下标right都加入hashmap中,对于每个元素n下标left,在map中查找是否有target-n的元素,若有,则返回其下标right 第二种方法:从第一个元素x下标left开始,若哈希表中无target-x的元素,则将key-x,v
阅读全文
posted @ 2022-08-01 13:48
Jolyne123
阅读(50)
推荐(0)
编辑