目录
977.有序数组的平方
题目描述:
解决方法一:遍历生成新数组后使用Arrays.sort()进行排序
class Solution { public int[] sortedSquares(int[] nums) { int[] arr = new int[nums.length]; for(int i =0 ; i<=nums.length-1 ; i++ ){ arr[i]=nums[i]*nums[i]; } Arrays.sort(arr); return arr ; } }
解决方法二:双指针
class Solution { public: vector<int> sortedSquares(vector<int>& nums) { int fenjie = -1; for(int i = 0 ; i < nums.size() ; ++i) { fenjie = i; if(nums[i] >= 0)//查找分界点 { fenjie = i - 1; break; } } int i = fenjie; int j = fenjie + 1; vector<int> answer; while(i >= 0 || j <= nums.size() - 1) { if(i < 0)//开头的两个数据防止越界访问 { answer.push_back(nums[j]*nums[j]); ++j; }else if(j >= nums.size()) { answer.push_back(nums[i]*nums[i]); --i; }else if(nums[i]*nums[i] < nums[j]*nums[j]) { answer.push_back(nums[i]*nums[i]); --i; } else { answer.push_back(nums[j]*nums[j]); j++; } } return answer; } }
189.轮转数组
题目描述:
代码:
class Solution { public void rotate(int[] nums, int k) { int low = 0 ; int high = nums.length-1 ; if (k > nums.length){ k = k%nums.length; } fz(nums,low ,high); fz(nums,0,k-1); fz(nums,k, nums.length-1); } public void fz(int arr[] , int low , int high){ while(low <= high){ int temp = arr[low] ; arr[low] = arr[high]; arr[high] = temp ; low ++ ; high -- ; } } }