• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > leetcode遇到的一个题?

leetcode遇到的一个题?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了leetcode题解,leetcode java题解,leetcode js题解,leetcode怎么刷题,leetcode刷题指南等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:leetcode遇到的一个题?
描述:

问题:
Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].

我实现的程序:
var moveZeroes = function(nums) {

nums.forEach(function(val, key, arr){
    if( (key+1) < arr.length) {
        if(val === 0) {
            arr[key] = arr[key+1];
            arr[key+1] = 0;
        }
    }
});

};

运行结果:

Your input

[0,1,0,3,12]
Your answer

[1,0,3,12,0]
Expected answer

[1,3,12,0,0]

为什么没有得到期望的结果?


解决方案1:

c#的,通过leetcode,不过性能中等。

public class Solution {
public void MoveZeroes(int[] nums) {
      var stack = new Stack<int>();
        int zeros = 0;

        for (var i = 0; i < nums.Length; i++)
        {
            if (nums[i] == 0)
            {
                zeros++;
                continue;
            }

            stack.Push(nums[i]);
        }

        for (var i = nums.Length - 1; i > nums.Length - 1 - zeros; i--)
        {
            nums[i] = 0;
        }

        for (var i = nums.Length -1 - zeros; i >= 0; i--)
        {
            nums[i] = stack.Pop();
        }
}

}

解决方案2:

forEach() executes the provided callback once for each element present in the array in ascending order.

forEach 是按照数组从左到右的顺序,将每个元素遍历一次,当遍历到第一个元素0时,经过比较判断需要跟后面一个元素换位,此时数组就变成了

[1, 0, 0, 3, 12]

第二个元素此时已经变成了0, 接着遍历到第二个元素,判断为0,继续换位(第2个0和第3个0互换)

[1, 0, 0, 3, 12]

同理

[1, 0, 3, 0, 12]
[1, 0, 3, 12, 0]

所以 你的答案,只是把数组中出现的第一个0移到末尾去

解决方案3:

如果arr[k+1]本来就是0呢,你这样做是不行的


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • (python)关于leetcode刷题的顺序与资源?
  • 求大神说说leetcode刷题正确姿势
  • 有人在leetcode上刷过题吗?有一个操作上的弱弱的问题
  • leetcode遇到的一个题?

相关文章

  • 2017-06-07 彩票中奖概率如何计算中奖概率问题
  • 2017-06-07 python学习之路指南
  • 2017-06-07 如何将Python的正则式转换成Golang正则式?
  • 2017-06-07 这个字符编码代表什么?\u0020
  • 2017-06-07 VC60在WIN2008下的问题
  • 2017-06-07 (python)pyspider里pyquery的map方法映射的返回值无效导致单页能调试通,整体采集不到数据?
  • 2017-06-07 Python27控制台下安装pipinstallpython-Levenshtein出现如下问题
  • 2017-06-07 在JBoss有没有什么比较好用的反盗链方案?
  • 2017-06-07 (shell)在terminal中启动程序时,为何会出现未导入包的错误?
  • 2017-06-07 在pycharm中写python使用fromimpotas会有提示?请问这是违反了PE8的什么规定吗?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • phpcurl抓取网页数据时怎么处理flah网页
    • laravel框架中的carbon::now和php原生的time有什么区别
    • 报错,求解!
    • python3中文乱码
    • redis求教一下redis与memcache的应用场景
    • Python有办法在调用的时候显示中文吗
    • api使用次数感觉不明确
    • (golang)Revel的路由问题
    • 将视频转换为m3u8,使用AES-128的方式加密HLS真的有效吗?
    • java多线程与python多线程同时进行io密集型操作

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有