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

简介: 【LeetCode】第5天 - 283. 移动零 | 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;
    }
}
目录
相关文章
|
2月前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
2月前
|
存储
【合并两个有序数组】LeetCode第88题讲解
【合并两个有序数组】LeetCode第88题讲解
|
19天前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
15天前
【力扣】80.删除有序数组中的重复项Ⅱ
【力扣】80.删除有序数组中的重复项Ⅱ
|
27天前
|
存储
【力扣经典面试题】80. 删除有序数组中的重复项 II
【力扣经典面试题】80. 删除有序数组中的重复项 II
|
27天前
|
存储
【力扣经典面试题】合并两个有序数组
【力扣经典面试题】合并两个有序数组
|
2月前
|
机器学习/深度学习 算法 索引
leetcode热题100.两数之和
leetcode热题100.两数之和
13 1
|
2月前
LeetCode刷题---80. 删除有序数组中的重复项 II(双指针)
LeetCode刷题---80. 删除有序数组中的重复项 II(双指针)
|
2月前
|
机器学习/深度学习 算法
力扣刷题日常(一)
力扣刷题日常(一)
20 2
|
2月前
|
存储 索引
《LeetCode》—— LeetCode刷题日记
《LeetCode》—— LeetCode刷题日记

热门文章

最新文章