leecode每日刷题2

leecode每日刷题2

leecode每日刷题2

题目描述 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

 

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:

输入: nums = [0]
输出: [0]
 

提示:

1 <= 1 nums.length <="104" -231 <="nums[i]"   进阶:你能尽量减少完成的操作次数吗? 来源:力扣(leetcode) 链接:https: leetcode-cn.com problems move-zeroes 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 code></=>

解题代码1

  void swap(int *a, int *b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
  }
  void moveZeroes(int* nums, int numsSize){
    int i = 0,tmp=0,zeronum = 0;
    while(i<numssize){ if(nums[i]="=0){" zeronum++; } else{ if(zeronum){ swap(nums+i-zeronum,nums+i); zeronum--; 调换顺序后,i的值需-1 i--; i++; < code></numssize){>

解题代码2

  void swap(int *a, int *b){
    int tmp = *a;
    *a = *b;
    *b = tmp;
  }
  void moveZeroes(int* nums, int numsSize){//&#x548C;&#x6211;&#x521D;&#x59CB;&#x60F3;&#x6CD5;&#x4E00;&#x6837;&#xFF0C;&#x4E0D;&#x540C;&#x7684;&#x662F;&#x8FD9;&#x91CC;&#x5229;&#x7528;&#x53CC;&#x6307;&#x9488;&#x66FF;&#x4EE3;&#x4E86;&#x4E4B;&#x524D;&#x7684;&#x96F6;&#x6570;
    int left = 0,right = 0;
    while(right < numsSize){
        if(nums[right]){
            swap(nums+left,nums+right);
            left++;
        }
        right++;
    }
}

题目描述 两数之和 II – 输入有序数组

&#x7ED9;&#x4F60;&#x4E00;&#x4E2A;&#x4E0B;&#x6807;&#x4ECE; 1 &#x5F00;&#x59CB;&#x7684;&#x6574;&#x6570;&#x6570;&#x7EC4;&#xA0;numbers &#xFF0C;&#x8BE5;&#x6570;&#x7EC4;&#x5DF2;&#x6309; &#x975E;&#x9012;&#x51CF;&#x987A;&#x5E8F;&#x6392;&#x5217;&#xA0; &#xFF0C;&#x8BF7;&#x4F60;&#x4ECE;&#x6570;&#x7EC4;&#x4E2D;&#x627E;&#x51FA;&#x6EE1;&#x8DB3;&#x76F8;&#x52A0;&#x4E4B;&#x548C;&#x7B49;&#x4E8E;&#x76EE;&#x6807;&#x6570;&#xA0;target &#x7684;&#x4E24;&#x4E2A;&#x6570;&#x3002;&#x5982;&#x679C;&#x8BBE;&#x8FD9;&#x4E24;&#x4E2A;&#x6570;&#x5206;&#x522B;&#x662F; numbers[index1] &#x548C; numbers[index2] &#xFF0C;&#x5219; 1 <= 0 2 4 6 7 9 104 index1 < index2 。 以长度为 的整数数组 [index1, index2] 的形式返回这两个整数的下标 和 index2。 你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。 你所设计的解决方案必须只使用常量级的额外空间。   示例 1: 输入:numbers="[2,7,11,15]," target="9" 输出:[1,2] 解释:2 与 之和等于目标数 。因此 。返回 [1, 2] 2: 输出:[1,3] 3] 3: 解释:-1 -1 提示: * -1000 numbers 按 非递减顺序 排列 仅存在一个有效答案 来源:力扣(leetcode) 链接:https: leetcode-cn.com problems two-sum-ii-input-array-is-sorted 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 code></=>

解题代码

  int* twoSum(int* numbers, int numbersSize, int target, int* returnSize){
    *returnSize = 2;
    int left = 0,right = numbersSize-1;//&#x4F7F;&#x7528;&#x53CC;&#x6307;&#x9488;
    while(left< numbersSize){//&#x627E;&#x5230;&#x76EE;&#x6807;target&#x8981;&#x63D2;&#x5165;&#x4F4D;&#x7F6E;&#x7684;&#x4E0B;&#x6807;&#x53EF;&#x4EE5;&#x7F29;&#x5C0F;&#x67E5;&#x627E;&#x8303;&#x56F4;,&#x731C;&#x6D4B;
        if((numbers[left]+numbers[right]) > target){
            right--;
        }
        else if((numbers[left]+numbers[right]) < target){
            left++;
        }else{
            break;
        }
    }
    int *returnindex = malloc(sizeof(int)*2);
    returnindex[0] = left +1, returnindex[1] = right +1;
    return returnindex;
  }

Original: https://www.cnblogs.com/jane315/p/15948279.html
Author: jane_315
Title: leecode每日刷题2

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583738/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球