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

个人学习编程(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;
}

 


http://www.kler.cn/a/592204.html

相关文章:

  • 笔记本运行边缘计算
  • 【Qt】private槽函数可以被其他类中的信号连接
  • 算法岗学习路线
  • 【Python】12、函数-02
  • 告别传统直播单一性,智享三代 AI 无人直播开启定制时代
  • 2025-gazebo配置on vmware,wsl
  • android MutableLiveData setValue 响应速速 postValue 快
  • 网络爬虫【爬虫库urllib】
  • 织梦DedeCMS优化文章模版里的“顶一下”与“踩一下”样式
  • VulnHub-matrix-breakout-2-morpheus通关攻略
  • 启幕数据结构算法雅航新章,穿梭C++梦幻领域的探索之旅——二叉树序列构造探秘——堆的奥义与实现诗篇
  • redis缓存更新策略
  • Superagent 异步请求:如何处理复杂的 HTTP 场景
  • C#中修饰符——abstract、virtual
  • 领略算法真谛:01背包问题
  • 深入理解 Linux ALSA 音频架构:从入门到驱动开发
  • LeetCode算法题(Go语言实现)_05
  • Linux--内核进程O(1)调度队列
  • HTML 图像与多媒体元素:拓展学习边界的进度记录(一)
  • LinkedList 底层源码深度解析