![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 77
机智的豆子
现在学习编程还在挣扎阶段,需要有恒心才能坚持下来。
展开
-
合并两个有序链表21
方法一:递归思路我们可以如下递归地定义两个链表里的 merge 操作(忽略边界情况,比如空链表等):也就是说,两个链表头部值较小的一个节点与剩下元素的 merge 操作结果合并。算法我们直接将以上递归过程建模,同时需要考虑边界情况。如果 l1 或者 l2 一开始就是空链表 ,那么没有任何操作需要合并,所以我们只需要返回非空链表。否则,我们要判断 l1 和 l2 哪一个链表的头节点的值更小,然后递归地决定下一个添加到结果里的节点。如果两个链表有一个为空,递归结束。class Solution {原创 2020-06-30 00:56:32 · 405 阅读 · 0 评论 -
移动零283
指针我们创建两个指针i和j,第一次遍历的时候指针j用来记录当前有多少非0元素。即遍历的时候每遇到一个非0元素就将其往数组左边挪,第一次遍历完后,j指针的下标就指向了最后一个非0元素下标。第二次遍历的时候,起始位置就从j开始到结束,将剩下的这段区域内的元素全部置为0。class Solution { public void moveZeroes(int[] nums) { if(nums==null) { return; } //第一次遍历的时候,j指针记录非0的个数,只要是非0的统原创 2020-06-30 00:37:15 · 124 阅读 · 0 评论 -
两数之和1
方法一:暴力法暴力法很简单,遍历每个元素 xx,并查找是否存在一个值与 target - xtarget−x 相等的目标元素。class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < nums.length; j++) {原创 2020-06-30 00:28:19 · 387 阅读 · 0 评论 -
删除排序数组中的重复项26、80
方法:双指针法算法数组完成排序后,我们可以放置两个指针 i和 j,其中 i 是慢指针,而 j 是快指针。只要 nums[i]=nums[j],我们就增加 j 以跳过重复项。当我们遇到nums[j] =nums[i] 时,跳过重复项的运行已经结束,因此我们必须把它(nums[j])的值复制到 nums[i + 1]。然后递增 i,接着我们将再次重复相同的过程,直到 j 到达数组的末尾为止public int removeDuplicates(int[] nums) { if (nums.len原创 2020-06-30 00:08:42 · 364 阅读 · 0 评论 -
环形链表141
方法 1:哈希表想法如果我们用一个 Set 保存已经访问过的节点,我们可以遍历整个列表并返回第一个出现重复的节点。class Solution { public boolean hasCycle(ListNode head) { if (head == null || head.next == null) { return false; } Set<ListNode> set = new HashSet<原创 2020-06-29 23:43:02 · 125 阅读 · 0 评论 -
两两交换链表节点24
方法一:迭代我们把链表分为两部分,即奇数节点为一部分,偶数节点为一部分,A 指的是交换节点中的前面的节点,B 指的是要交换节点中的后面的节点。在完成它们的交换,我们还得用 prevNode 记录 A 的前驱节点。算法:1.firstNode(即 A) 和 secondNode(即 B) 分别遍历偶数节点和奇数节点,即两步看作一步。2.交换两个节点: firstNode.next = secondNode.next secondNode.next = firstNode3.还需要更新 prev原创 2020-06-29 23:16:37 · 289 阅读 · 0 评论 -
反转链表(206)
1.双指针法1.1 解题思路1.我们可以申请两个指针,第一个指针叫 prev,最初是指向 null 的。2.第二个指针 curr 指向 head,然后不断遍历 curr。3.每次迭代到 curr,都将 curr 的 next 指向 prev,然后 prev 和 curr 前进一位。4.都迭代完了(curr 变成 null 了),prev 就是最后一个节点了。1.2 代码思路 /** * 双指针迭代 * 我们可以申请两个指针,第一个指针叫 pre,最初是指向 null 的。原创 2020-06-27 23:34:37 · 269 阅读 · 0 评论