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. 移动零)
题目2(167. 两数之和 II - 输入有序数组)
解题思路
题目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 - 输入有序数组的主要内容,如果未能解决你的问题,请参考以下文章