当前位置: 首页 > news >正文

个人学习编程(3-19) leetcode刷题

移动数组中的0放到数组最后面:

eg:

[1,3,]

 遍历:

 {0,12,0,1,0}

k=1就是第一次  i=0

12 0 0 1 0

第二次不变

第三次不变

第四次 12 0 1 0 0

k=2

第一次  12 1 0 0 0 成功

剩下就是把k遍历结束即可。

#include <stdio.h>
#include <bits/stdc++.h>

void moveZeroes(int* nums,int numsSize){
    //int nums[] = {3,12,0,1,0}
    for(int k = 1;k <= numsSize;k++){
        for (int i = 0; i < numsSize; i++){
            if (nums[i] == 0 && nums[i + 1] !=0){
                nums[i] = nums[i + 1];
                nums[i+1] = 0;
            }
        }
    }
    return;
}

int main() {
    int times = 5;
    int i;
    int nums[] = {0,12,0,1,0};
    moveZeroes(nums,5);
    for ( i = 0; i < times; i++){
        printf("%d",nums[i]);
        if (i != times -1)
        {
            printf("%c ",',');
        }
        
        
    }
    
}

 冒泡交换:

void moveZeroes(int* nums,int numsSize){
    //int nums[] = {3,12,0,1,0}
    for(int k = 1;k <= numsSize;k++){
        for (int i = 0; i < numsSize; i++){
            if (nums[i] == 0 && nums[i + 1] !=0){
                int t = nums[i];
                nums[i] = nums[i + 1];
                nums[i+1] = t;
            }
        }
    }
    return;
}

 双指针:

初始时i j = 0

如果下一个数字的值是非零那么就 i++ j++ 因为i j=1 所以无需交换

知道当前下标j nums[j] 为 0     就交换 此时i 还处于比j小 1 的位置,因此就可以正常交换达到把0放到后面的任务。

 

#include <stdio.h>

void moveZeroes(int* nums, int numsSize) {
    int i = 0;
    int j = 0;
    //{5, 12, 0, 1, 0}
    
    while (j < numsSize) {
        if (nums[j] != 0) {
            // 交换 nums[i] 和 nums[j]
            int temp = nums[i];
            nums[i] = nums[j];
            nums[j] = temp;
            i++;  // 移动指针 i
        }
        j++;  // 移动指针 j
    }
}


int main() {
    int nums[] = {5, 12, 0, 1, 0};
    int numsSize = 5;
    int i;
    moveZeroes(nums, numsSize);

    // 输出数组,格式化输出
    for (i = 0; i < numsSize; i++) {
        printf("%d", nums[i]);
        if (i != numsSize - 1) {
            printf(", ");
        }
    }
    return 0;
}

 

相关文章:

  • Python 线程池
  • java-正则表达式-集合-泛型
  • VScode的debug
  • AUTOSAR与arxml的文档解析
  • 【Ratis】ratis-grpc支持零拷贝系列之引入ZeroCopyMessageMarshaller工具类
  • 【6】组合计数学习笔记
  • 2.FastAPI 中的路由与路径操作
  • Python中的字典:深度解析与应用实践
  • 破解验证码新利器:基于百度OCR与captcha-killer-modified插件的免费调用教程
  • 数据驱动进化:AI Agent如何重构手机交互范式?
  • CUDAOpenCV Hessain矩阵计算
  • 虚拟电商-延迟任务系统的微服务改造(二)
  • Linux内核Netfilter使用实战案例分析
  • 利用labelme进行图片标注
  • Redis BitMap 用户签到
  • numpy学习笔记12:实现数组的归一化(0-1范围)
  • 力扣 797. 所有可能的路径 解析JS、Java、python、Go、c++
  • 第2章:容器核心原理:深入理解Namespace、Cgroup与联合文件系统
  • 自动化测试框架pytest+requests+allure
  • Lambda 表达式的语法:
  • 2024年上市公司合计实现营业收入71.98万亿元
  • 美联储主席:关税“远超预期”,美联储实现目标的进程或被推迟至明年
  • 习近平致电祝贺默茨当选德国联邦总理
  • 福特汽车撤回业绩指引,警告关税或造成15亿美元利润损失
  • 李公明 | 一周画记:生活就是抵抗
  • 竞彩湃|新科冠军利物浦留力?纽卡斯尔全力冲击欧冠