剑指 Offer 57. 和为s的两个数字
题目:
思路:
【1】基于双循环暴力破解的方式也是可以做的,基于辅助空间Set的做法也是可以做的(单次遍历,碰到set里面能够组合成结果的就将两个返回)
【2】循环加双指针的处理方式
代码展示:
循环加双指针的处理方式:
//时间1 ms击败99.72% //内存60.3 MB击败35.14% //时间复杂度O(N),最多遍历整个数组 //空间复杂度O(1) class Solution { public int[] twoSum(int[] nums, int target) { int left = 0, right = nums.length-1; while (left<right){ if (nums[left]+nums[right] > target){ right--; }else if (nums[left]+nums[right] < target){ left++; }else { return new int[]{nums[left],nums[right]}; } } return new int[]{-1,-1}; } }