第十三个算法-移动0

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

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:

  1. 必须在原数组上操作,不能拷贝额外的数组。
  2. 尽量减少操作次数。

思路:

1,头一看,思路很简单,直接后移就可以了。判断一下数据,如果为0 就循环向后移动。

2,思路也对,就是判断少了,如果连续两个0呢?立马歇菜。

代码:

public void moveZeroes(int[] nums) {      int i ,y =0;

for (i =0; i <nums.length ; i++) {         if (nums[i] != 0) {            nums[y] = nums[i];            y++;         }      }      if(y != nums.length){         for (int j = y; j <nums.length ; j++) {            nums[j] = 0;         }      }}

最后一个小时的时间没有写出来,后来想想不能如此的耽误时间了,这本来就是简单的算法,为什么我做的如此困难,参考了别人的思路,然后写出了上面的代码。头疼。不会更笨了吧。

原文地址:https://www.cnblogs.com/liutian1912/p/9360355.html

时间: 2024-10-13 23:51:06

第十三个算法-移动0的相关文章

普林斯顿公开课:算法第0章,课程介绍

课程介绍 这门课程核心内容是算法和数据结构. 具体的算法和数据结构如下: 数据类型:堆栈.队列.背包.并查集.优先队列. 排序:快排.并排.堆排.基数排序 查找:BST.红黑BST.哈希表 图:BFS.DFS.Prim.Kruskai.Dijkstra 字符串:KMP.正则.TST.哈夫曼.LZW 高级:B树.后缀数组.最大流 为什么要学习算法 算法在各个领域中都有应用. 算法可以提高编程效率. 算法可以将现实生活中的物理公式转换成代码,算法可以模拟现实世界,然后发现世界的奥秘. 算法是很有趣的

为了打击网站被黑作弊行为,360搜索上线悟空算法2.0

我们在搜索浏览网页的时候,经常会出现正常网页跳转至含有色情,博彩等信息的恶意站点上去.这样严重影响到了用户的搜索体验,为了打击此类行为,360搜索正式上线了:"悟空算法2.0" 网站被黑是一种较为常见的现象,很多人通过黑客手段代码劫持,对正常的站点进行了恶意行为,现在这种现象更加的明显,这次上线的悟空算法在公告中显示:能更加准确快速地识别各种网站被黑客攻击的行为,降低恶意网站在搜索引擎中的不良展现和对用户的影响,严厉打击此类针对360搜索的作弊行为. 同时360搜索页提供了多种查杀工具

动态规划算法求解0,1背包问题

首先我们来看看动态规划的四个步骤: 1. 找出最优解的性质,并且刻画其结构特性: 2. 递归的定义最优解: 3. 以自底向上的方式刻画最优值: 4. 根据计算最优值时候得到的信息,构造最优解 其中改进的动态规划算法:备忘录法,是以自顶向下的方式刻画最优值,对于动态规划方法和备忘录方法,两者的使用情况如下: 一般来讲,当一个问题的所有子问题都至少要解一次时,使用动态规划算法比使用备忘录方法好.此时,动态规划算法没有任何多余的计算.同时,对于许多问题,常常可以利用其规则的表格存取方式,减少动态规划算

百度冰桶算法2.0简介

百度的各种算法的出台,其目的只有一个就是提高用户的体验度,用户体验好了,那么baidu就会重点关注网站,将其相关关键词更好的呈现给访问者,这就是为何大家一直青睐baidu,但是又不喜欢其的道理,因为其规律总是变化无穷,仍追求者需要不断的调整步伐. 那么随着手机移动端的市场到来,其占有率已经不可阻挡的成为了超过pc端的又一新起领域,而baidu的冰桶算法针对手机移动端,在全球估计也就只有guge了,而国内虽然pc端移动搜索市场其份额在不断的下滑,但是baidu注重移动端的结果,目前已经占据了市场绝

c语言经典算法—求0—7 所能组成的奇数个数

题目:求0—7 所能组成的奇数个数. 算法思想:这个问题其实是一个排列组合的问题,设这个数为sun=a1a2a3a4a5a6a7a8,a1-a8表示这个数的某位的数值,当一个数的最后一位为奇数时,那么这个数一定为奇数,不管前面几位是什么数字.如果最后一位数为偶数,则这个数一定为偶数.a1-a8可以取0-7这个八个数字,首位数字不为0.从该数为一位数到该数为8位数开始统计奇数的个数:1.当只有一位数时也就是该数的最后一位,奇数个数为42.当该数为两位数时,奇数个数为4*7=283.当该数为三位数时

机器学习&amp;深度学习基础(tensorflow版本实现的算法概述0)

tensorflow集成和实现了各种机器学习基础的算法,可以直接调用. 监督学习 1)决策树(Decision Tree) 决策树是一种树形结构,为人们提供决策依据,决策树可以用来回答yes和no问题,它通过树形结构将各种情况组合都表示出来,每个分支表示一次选择(选择yes还是no),直到所有选择都进行完毕,最终给出正确答案. 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题.剪

0318 复利算法4.0

#include<stdio.h> #include <math.h> #include<stdlib.h> void fuli(){ double F,P,I; int M,N; system("cls"); printf("\t欢迎进入复利计算软件\n"); printf("请输入存入本金:"); scanf("%lf",&P); printf("请输入年利率:&quo

0330 复利算法5.0(包括测试)

更新说明: 本次程序和50黄柏堂同学一次完成 把C语言版本转换为JAVA: 更新了界面: 更新了测试: package fuli; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; import java.math.BigDecimal; import java.lang.Runtime; import javax.swing.JButton; imp

FCC JS基础算法题(0):Reverse a String(翻转字符串)

题目描述: 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串.你的结果必须得是一个字符串. 算法: function reverseString(str) { // 请把你的代码写在这里 str = str.split("").reverse().join(""); return str; } reverseString("hello"); 原文地址:https://www.cnblogs.com/hume