
算法:0移动问题
发布日期:2021-05-08 19:53:46
浏览次数:21
分类:精选文章
本文共 1031 字,大约阅读时间需要 3 分钟。
最近在leetcode上被算法题虐的体无完肤。想着建立一个算法专栏,把自己的解决问题的思路办法。与别人优秀的算法整理下。
题目
描述
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例
输入: [0,1,0,3,12] 输出: [1,3,12,0,0]
说明
1.必须在原数组上操作,不能拷贝额外的数组。
2.尽量减少操作次数。
java代码实现
个人
一开始看到这个问题。感觉没什么难的。直接使用最暴力的解决办法。双重for循环(冒泡)的解决办法的思路。把0排到最后面。
moveZeroes(){ int nums[] = { 0,1,0,3,12,1,0,33,0}; for(int i=0;i
虽然结果没错,但是看着个运行时间与消耗内存,就可以看出来这不是一段优秀的算法代码。使用双重for循环,大概思路就是每次把最前面的0给移动到最后。时间复杂度为O(n2-n)
评论区
这是我在评论区看到的代码
void huiwen(){ int nums[] = { 0,1,0,3,12,1,0,33,0}; int zeronums = 0; int i = 0; for(i = 0; i < nums.length; i++) { if(nums[i] == 0) { zeronums++; } else if(zeronums != 0) { nums[i - zeronums] = nums[i]; nums[i] = 0; } System.out.println(Arrays.toString(nums)); } }

发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月19日 05时56分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
HP服务器设置iLO
2021-05-08
从头实现一个WPF条形图
2021-05-08
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08
针对单个网站的渗透思路
2021-05-08
Typescript 学习笔记六:接口
2021-05-08
02、MySQL—数据库基本操作
2021-05-08
OpenJDK1.8.0 源码解析————HashMap的实现(一)
2021-05-08
MySQL-时区导致的时间前后端不一致
2021-05-08
2021-04-05阅读小笔记:局部性原理
2021-05-08
go语言简单介绍,增强了解
2021-05-08
架构师入门:搭建基本的Eureka架构(从项目里抽取)
2021-05-08
MongoDB 快速扫盲贴
2021-05-08
one + two = 3
2021-05-08
sctf_2019_easy_heap
2021-05-09
PyQt5之音乐播放器
2021-05-09
Redis进阶实践之十八 使用管道模式提高Redis查询的速度
2021-05-09