主页

旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数 void rotate(int* nums, int numsSize, int k) { int*p=(int*)malloc(numsSize*sizeof(int)); for(int i=0;i<numsSize;i++) p[(i+k)%numsSize]=nums[i]; for(int i=0;i<numsSize;i++) nums[i]=p[i]; free(p); return nums; } 对于给定的数组要将它进行翻转首先定义另外一个数组p,p的大小与给定数组的大小相等,通过数学规律可以发现(1+k)%numSiz...

阅读更多

只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素 int singleNumber(int* nums, int numsSize) { int a = 0; for (int i = 0; i < numsSize; i++) { int j = 0; for (; j < numsSize; j++) { if ((nums[i] == nums[j]) && (i != j)) break; else if (j == numsSize-1) ...

阅读更多

删除数组中的重复项

给你一个有序数组nums,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度 int removeDuplicates(int* nums, int numsSize) { if(numsSize==0) { return 0; } int fast=1; int slow=0; for(;fast<numsSize;fast++) { if(nums[fast]==nums[slow]) { ; } else { slow++; ...

阅读更多