提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
轮转数组分为左移和右移
一、力扣189. 轮转数组
轮转数组分为左移和右移
class Solution {
public void rotate(int[] nums, int k) {
if(k == 0){
return;
}
int len = nums.length-(k%nums.length);
convert(nums,0,len-1);
convert(nums,len,nums.length-1);
convert(nums,0,nums.length-1);
}
public void convert(int[] nums, int left, int right){
for(int i = left, j = right; i < j; i ++, j --){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
二、力扣724. 寻找数组的中心下标
class Solution {
public int pivotIndex(int[] nums) {
int sum = 0;
for(int a : nums){
sum += a;
}
int leftSum = 0;
for(int i = 0; i < nums.length; i ++){
if(leftSum*2+nums[i] == sum){
return i;
}else{
leftSum += nums[i];
}
}
return -1;
}
}
三、力扣34. 在排序数组中查找元素的第一个和最后一个位置
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] res = new int[]{-1,-1};
if(nums.length == 0){
return res;
}
boolean flag = true;
for(int i = 0; i < nums.length; i ++){
if(nums[i] == target){
if(flag){
res[0] = i;
res[1] = i;
flag = false;
}else{
res[1] = i;
}
}
}
return res;
}
}
四、力扣922. 按奇偶排序数组 II
class Solution {
public int[] sortArrayByParityII(int[] nums) {
int len = nums.length;
int[] arr1 = new int[len];
int[] arr2 = new int[len];
for(int i = 0, j = 0, k = 1; i < len; i ++){
if(nums[i]%2 == 0){
arr1[j] = nums[i];
j += 2;
}else{
arr2[k] = nums[i];
k += 2;
}
}
for(int i = 0; i < len ; i++){
if(i % 2 == 0){
nums[i] = arr1[i];
}else{
nums[i] = arr2[i];
}
}
return nums;
}
}
883

被折叠的 条评论
为什么被折叠?



