首页 > 其他分享 >[LeetCode Hot] LeetCode283. 移动零

[LeetCode Hot] LeetCode283. 移动零

时间:2023-12-02 10:34:06浏览次数:36  
标签:LeetCode283 temp nums int length ++ Hot LeetCode 指针

题目描述

方法一:时间复杂度O(n2)

class Solution {
    public void moveZeroes(int[] nums) {
        for (int i = 0; i < nums.length; i ++) {
            // 指针i为0的时候停止
            if (nums[i] == 0) {
                // 遍历[i + 1, nums.length - 1],如果遇到nums[j] != 0,就交换两个位置的元素值
                for (int j = i + 1; j < nums.length; j ++) {
                    if (nums[j] != 0) {
                        int temp = nums[i];
                        nums[i] = nums[j];
                        nums[j] = temp;
                        break;
                    }
                }
            }
        }
    }
}

方法二:双指针,时间复杂度O(n)

class Solution {
    public void moveZeroes(int[] nums) {
        // 定义两个指针i和j
        // j以及j左边用来保存非0元素
        int j = 0;
        for (int i = 0; i < nums.length; i ++) {
            // 如果nums[i]为非零元素,则将其交换给j,j向后移动一位
            if (nums[i] != 0) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j++] = temp;
            }
        }
    }
}

标签:LeetCode283,temp,nums,int,length,++,Hot,LeetCode,指针
From: https://www.cnblogs.com/keyongkang/p/17871318.html

相关文章

  • [LeetCode Hot 100] LeetCode11. 盛最多的水
    题目描述方法一:暴力,超出时间限制模拟所有情况,记录最大的体积值。体积=Math.min(height[i],height[j])*(j-i)classSolution{publicintmaxArea(int[]height){intres=Integer.MIN_VALUE;for(inti=0;i<height.length;i++){......
  • #yyds干货盘点# LeetCode程序员面试金典:奇偶链表
    题目给定单链表的头节点head,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是奇数,第二个节点的索引为偶数,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在O(1)的额外空间复杂......
  • #yyds干货盘点# LeetCode程序员面试金典:下一个更大元素 II
    题目给定一个循环数组nums(nums[nums.length-1]的下一个元素是nums[0]),返回nums中每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。 ......
  • #yyds干货盘点# LeetCode程序员面试金典:下一个更大元素 II
    题目给定一个循环数组nums(nums[nums.length-1]的下一个元素是nums[0]),返回nums中每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。 ......
  • 【leetcode 2949 统计美丽子字符串】
      importjava.util.HashMap;importjava.util.Map;classSolution{publicstaticvoidmain(String[]args){Solutionsolution=newSolution();longans=solution.beautifulSubstrings("baeyh",2);System.out.printl......
  • [LeetCode Hot 100] LeetCode128. 最长连续序列
    题目描述思路将数组所有点映射到一个数轴上,可以发现问题变为求每段区间首元素到尾元素的长度的最大值。区间的长度:区间尾元素值-区间首元素值+1方法一:超出时间限制这个方法是最初自己想到的,但是超时了,主要原因是程序会有冗余的遍历过程,增加了开销。思路:(时间复杂度太高)......
  • 一个算法笨蛋的11月leetCode刷题日记
    时间情况2021年10月29日时隔一年,第三次重做反转链表,又没做出来,太废了。2021年11月1日时隔两天,第四次重做反转链表,轻松写出【21】合并两个有序链表(思路:想象两个有序链表,需要新建两个next指向头节点的空node,一个用于最后返回.next,一个用于接收最小的node)【206】反转链表(思路:......
  • 【LeetCode】22. 括号生成
    题目数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]提示:1<=n<=8思路:利用深度优先遍历,记录左括号可用个......
  • 1000多页!LeetCode刷题手册分享
    这本手册确实是一部令人印象深刻的作品。(手册链接在文末!!!)首先,内容充实是这本手册的一大亮点。它涵盖了广泛的算法和数据结构主题,包括数组、链表、树、图、排序算法、动态规划等等。每个主题都有详细的解释、示例代码和复杂度分析,帮助读者深入理解和掌握相关知识。此外,手册还提供......
  • [LeetCode-中等] 最长连续序列
    这道题是这样的,给你一个没有排序的整形数组intArr,要求找出这个数组中数字连续的最长序列(不要求序列元素在原数组中连续)的长度需要写出一个时间复杂度为O(n)的算法比如intArr=[70,8,100,6,7,5] 应该返回4,因为最长的数字连续序列是[5,6,7,8] 它的长度为4intArr=......