第十三天——双指针
第一题:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
问题描述:
思路
代码
class Solution {
public int[] exchange(int[] nums) {
int [] array = new int[nums.length];
int left = 0,ritght = nums.length-1;
for(int i=0;i<nums.length;i++){
if(nums[i] % 2 != 0){
array[left] = nums[i];
left++;
}
else{
array[ritght] = nums[i];
ritght--;
}
}
return array;
}
}
第二题:剑指 Offer 57. 和为s的两个数字
问题描述:
思路
代码
class Solution {
public int[] twoSum(int[] nums, int target) {
int left=0,right=nums.length-1;
int [] res = new int [2];
while(left < right){
int sum = nums[left] + nums[right];
if(sum < target) left++;
else if(sum > target) right--;
else return new int[]{nums[left],nums[right]};
}
return new int[]{};
}
}
第三题:剑指 Offer 58 - I. 翻转单词顺序
问题描述
思路
代码
class Solution {
public String reverseWords(String s) {
s = s.trim();
int right = s.length()-1,left = right;
StringBuilder str = new StringBuilder();
while(left >= 0){
while(left >= 0 && s.charAt(left) != ' ') left--;
str.append(s.substring(left+1,right+1) + " ");
while(left >= 0 && s.charAt(left) == ' ') left--;
right = left;
}
return str.toString().trim();
}
}