LeetCode第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组相关的知识,希望对你有一定的参考价值。


283. 移动零 | 167. 两数之和 II - 输入有序数组

  • ​​题目描述​​
  • ​​题目1(283. 移动零)​​
  • ​​题目2(167. 两数之和 II - 输入有序数组)​​
  • ​​解题思路​​
  • ​​题目1(283. 移动零)​​
  • ​​题目2(167. 两数之和 II - 输入有序数组)​​
  • ​​代码实现​​
  • ​​题目1(283. 移动零)​​
  • ​​题目2(167. 两数之和 II - 输入有序数组)​​

题目描述

题目1(283. 移动零)

【LeetCode】第5天

题目2(167. 两数之和 II - 输入有序数组)

【LeetCode】第5天

解题思路

题目1(283. 移动零)

  • 使用一个游标index记录当前非0元素的个数;
  • 遍历数组,若nums[i]不为0,则将其移动至index处,再++index;
  • 遍历结束后,将nums[index ~ nums.length - 1]全部设为0,即可。

题目2(167. 两数之和 II - 输入有序数组)

  • 定义两个整型指针left = 0,right = numbers.length - 1,分别指向数组的头和尾;
  • 比较numbers[left] + numbers[right]和目标值target的大小。
    (1)若numbers[left] + numbers[right] == target,记录left,right的值,并返回left+1,right+1;
    (2)若numbers[left] + numbers[right] < target,left指针右移,right指针不动;
    (3)若numbers[left] + numbers[right] > target,left指针不动,right指针左移;

代码实现

题目1(283. 移动零)

class Solution 
public void moveZeroes(int[] nums)
int index = 0;
for(int i=0;i<nums.length;i++)
if(nums[i] != 0)
nums[index] = nums[i];
++index;


for(int i = index;i<nums.length;i++)
nums[i] = 0;


题目2(167. 两数之和 II - 输入有序数组)

class Solution 
public int[] twoSum(int[] numbers, int target)
int left = 0, right = numbers.length - 1;
int[] res = new int[2];
while(left < right)
if(numbers[left] + numbers[right] == target)
res[0] = left + 1;
res[1] = right + 1;
return res;
else if(numbers[left] + numbers[right] < target)
++left;
else
--right;


return null;


以上是关于LeetCode第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—283. 移动零(双指针)—day20

leetcode.283——移动零

前端与算法 leetcode 283. 移动零

LeetCode283.移动零

leetcode-283-移动零

LeetCode 283. 移动零