第一题:1470. 重新排列数组
class Solution { public int[] shuffle(int[] nums, int n) { //只需两个数的步长为n就在一起,在新的数组,因为一次加了两个元素, //所以每一次下来都得加2 int arr[]=new int[2*n]; for(int i=0,j=0;i<n;i++,j+=2){ arr[j]=nums[i]; arr[j+1]=nums[i+n]; } return arr; } }
第二题:1929. 数组串联
class Solution { public int[] getConcatenation(int[] nums) { //在n和2n分别弄两个索引进行拷贝就可以了 int n=nums.length; int arr[]=new int [2*n]; int j=0; for(int i=0;i<2*n;i++){ if(i<n){ arr[i]=nums[i]; }else{ arr[i]=nums[j]; j++; } } return arr; } }
第三题:1920. 基于排列构建数组
这题按照题目的意思就可以了
class Solution { public int[] buildArray(int[] nums) { int n= nums.length; int []arr=new int[n]; for(int i=0;i<n;i++){ arr[i]=nums[nums[i]]; } return arr; } }
第四题:1480. 一维数组的动态和
第一想法就是创建一个方法实现前几项的和。
class Solution { public int[] runningSum(int[] nums) { int count=0; int n=nums.length; int arr[]=new int[n]; for(int i=0;i<nums.length;i++){ count=soul(nums,i+1); arr[i]=count; } return arr; } public static int soul(int nums[],int n){ int sum=0; for(int i=0;i<n;i++){ sum+=nums[i]; } return sum; } }
第五题:剑指 Offer 58 - II. 左旋转字符串
这题参考了一下评论区的想法
class Solution { public String reverseLeftWords(String s, int n) { StringBuilder sb=new StringBuilder(); for(int i=n;i<s.length();i++){ sb.append(s.charAt(i));//从n开始得到每个字符 } for(int i=0;i<n;i++){ sb.append(s.charAt(i));//将第一个到n依次加到之前的后面 } return sb.toString();//转为字符串后返回 } }