首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

给定一个固定长度的整数数组arr,复制每个出现的零,将它们移位到right - leetCode

给定一个固定长度的整数数组arr,复制每个出现的零,将它们移位到数组的末尾,同时保持非零元素的相对顺序。

首先,我们可以使用两个指针来解决这个问题。一个指针用于遍历数组,另一个指针用于指示零的位置。

算法如下:

  1. 初始化一个变量count为0,用于记录数组中的零的个数。
  2. 遍历数组,如果当前元素为零,则count加1。
  3. 继续遍历数组,如果当前元素不为零,则将其移动到指针所指向的位置,并将指针后移一位。
  4. 最后,将数组末尾count个位置上的元素设置为零。

以下是实现该算法的JavaScript代码:

代码语言:txt
复制
function moveZeros(arr) {
  let count = 0;
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === 0) {
      count++;
    } else {
      arr[i - count] = arr[i];
    }
  }
  for (let i = arr.length - count; i < arr.length; i++) {
    arr[i] = 0;
  }
  return arr;
}

const arr = [1, 0, 2, 0, 3, 4];
console.log(moveZeros(arr));

运行以上代码,输出结果为[1, 2, 3, 4, 0, 0],即将所有的零移动到数组的末尾,并保持非零元素的相对顺序。

腾讯云相关产品和产品介绍链接地址:

以上是一个简单的解决方案,根据具体情况和要求,可能会有其他更高效的实现方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【算法专题】双指针

移动 题目链接 -> Leetcode -283.移动 Leetcode -283.移动 题目:给定一个数组 nums,编写一个函数所有 0 移动到数组末尾,同时保持非元素相对顺序。...复写 题目链接 -> Leetcode -1089.复写 Leetcode -1089.复写 题目:给你一个长度固定整数数组 arr ,请你将该数组出现每个都复写一遍,并将其余元素向右平移...盛水最多容器 题目链接 -> Leetcode -11.盛最多水容器 Leetcode -11.盛最多水容器 题目:给定一个长度为 n 整数数组 height 。...有效三角形个数 题目链接 -> Leetcode -611.有效三角形个数 Leetcode -611.有效三角形个数 题目:给定一个包含非负整数数组 nums ,返回其中可以组成三角形三条边三元组个数...四数之和 四数之和做法也和三数之和类似,大家可以自行尝试一下,题目链接 -> Leetcode -18.四数之和 Leetcode -18.四数之和 题目:给你一个由 n 个整数组数组 nums

10210

Leetcode数组题目

在这里插入图片描述 这不补下春节欠债 Three Sum(求三数之和) leetcode第15题 https://leetcode-cn.com/problems/3sum/ 给定一个包含 n 个整数数组...,找另外二个值它们和等于 0 4、如果三个数相加等于则存储相应二维数组中 :param nums: :return: '''...众数是指在数组出现次数大于 ⌊ n/2 ⌋ 元素。 你可以假设数组是非空,并且给定数组总是存在众数。...在这里插入图片描述 排序法是最好方法 https://leetcode-cn.com/problems/first-missing-positive/ 给定一个未排序整数数组,找出其中没有出现最小整数...&& item <= len) { //排除负数和大于输入数组长度数,因为缺失正数肯定小于数组长度+1(这里需要仔细想清楚) arr

61950

JavaScript刷LeetCode拿offer-高频40题

1、LeetCode 两数之和给定一个整数数组一个目标值,找出数组中和为目标值两个数。你可以假设每个输入只对应一种答案,且同样元素不能被重复利用。...arr[arr.length-1].length; };8、LeetCode 最大子序和给定一个整数数组 nums,找到一个具有最大和连续子数组(子数组最少包含一个元素)返回其最大和。...给定一个代表每个房屋存放金额非负整数数组,计算你在不触动警报装置情况下,能够偷窃最高金额。...只出现一次数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。...return Math.max(left, right)+1; } };20、LeetCode删除排序数组重复项给定一个排序数组,你需要在原地删除重复出现元素,使得每个元素只出现一次

34430

JavaScript刷LeetCode拿offer-经典高频40题

1、LeetCode 两数之和给定一个整数数组一个目标值,找出数组中和为目标值两个数。你可以假设每个输入只对应一种答案,且同样元素不能被重复利用。...arr[arr.length-1].length; };8、LeetCode 最大子序和给定一个整数数组 nums,找到一个具有最大和连续子数组(子数组最少包含一个元素)返回其最大和。...给定一个代表每个房屋存放金额非负整数数组,计算你在不触动警报装置情况下,能够偷窃最高金额。...只出现一次数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。...return Math.max(left, right)+1; } };20、LeetCode删除排序数组重复项给定一个排序数组,你需要在原地删除重复出现元素,使得每个元素只出现一次

38210

用Js刷LeetCode拿offer-经典高频40题

1、LeetCode 两数之和给定一个整数数组一个目标值,找出数组中和为目标值两个数。你可以假设每个输入只对应一种答案,且同样元素不能被重复利用。...arr[arr.length-1].length; };8、LeetCode 最大子序和给定一个整数数组 nums,找到一个具有最大和连续子数组(子数组最少包含一个元素)返回其最大和。...给定一个代表每个房屋存放金额非负整数数组,计算你在不触动警报装置情况下,能够偷窃最高金额。...只出现一次数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。...return Math.max(left, right)+1; } };20、LeetCode删除排序数组重复项给定一个排序数组,你需要在原地删除重复出现元素,使得每个元素只出现一次

53130

【优选算法题练习】day1

移动 1.题目简介 283. 移动 给定一个数组 nums,编写一个函数所有 0 移动到数组末尾,同时保持非元素相对顺序。...请注意 ,必须在不复制数组情况下原地对数组进行操作。...复写 1.题目简介 1089. 复写 给你一个长度固定整数数组 arr,请你将该数组出现每个都复写一遍,并将其余元素向右平移。 注意:请不要在超过该数组长度位置写入元素。...cur++; } //处理边界(如果prev超出数组边界2个位置,说明cur判断最后一个元素是0,因为数组空间有限,cur最后遍历0无法进行复制...快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个整数,每一次将该数替换为它每个位置上数字平方和。

12650

Leetcode-1.两数之和 -3.无重复字符最长子串 -9.回文数(C语言)】

Leetcode-1.两数之和 题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 那两个整数,并返回它们数组下标。...无重复字符最长子串 题目:给定一个字符串 s ,请你找出其中不含有重复字符最长子串长度 代码和注释: int lengthOfLongestSubstring(char* s) {...max记录最长字串长度 int max = 0; //j用来遍历leftright之间有没有重复字符 int j = 0; //遍历字符串...++完后,left赋给j,即每次都从left开始遍历right //若遇到重复字符,j一个位置赋给新left,right再++,这样又开始遍历一段新子字符串...回文数 题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

8610

LeetCode通关:数组十七连,真是不简单

描述: 给你一个有序数组 nums ,请你 原地 删除重复出现元素,使每个元素 只出现一次 ,返回删除后数组长度。...描述: 给定一个数组 nums,编写一个函数所有 0 移动到数组末尾,同时保持非元素相对顺序。...第一步:我们可以把为元素先给它删掉,怎么删呢?就是LeetCode26两个指针删除方式 第二步:但是我们这是移动到末尾,怎么办呢?我们把通过移动方式删除,导致数组末尾坑用填上就行了。...描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 那 两个 整数,并返回它们数组下标。 你可以假设每种输入只会对应一个答案。...描述: 给定一个含有 n 个正整数数组一个整数 target 。

37440

LeetCode刷题实战43:字符串相乘

题意 给定两个以字符串形式表示非负整数 num1 和 num2,返回 num1 和 num2 乘积,它们乘积也表示为字符串形式。...num1 和 num2 均不以开头,除非是数字 0 本身。 不能使用任何标准库大数类型(比如 BigInteger)或直接输入转换为整数来处理。...比如我们要计算123 * 224, 我们一个数组是[1, 2, 3],我们第二个数组是[2, 2, 4]。我们仿照乘法竖式中方法计算这两个数组当中两两乘积,并将它们拼装成答案。...除此之外就是前导问题,我们都知道除了以外合法数字是不允许首位出现0,但是由于我们计算是乘法,所以当其中某一个数为0会得到整体结果为0,但是表示在数组当中则是多个0....LeetCode刷题实战40:组合总和 II LeetCode刷题实战41:缺失一个正数 LeetCode刷题实战42:接雨水

40110

TypeScript算法题实战——数组篇(二分法、双指针、滑动窗口、螺旋矩阵TS解法)

console.log("向数组 尾 添加一个元素4, 修改后数组长度为: " + arr.push(4));console.log("向数组 头 添加一个元素0, 修改后数组长度为: " + arr.unshift...("下标从03数组", arr6.slice(0, 4));一、二分查找力扣链接:https://leetcode.cn/problems/binary-search/1.1、题目描述给定一个 n...排序整数数组 nums,返回 每个数字平方 组成数组,要求也按 非递减顺序 排序。.../minimum-size-subarray-sum/4.1、题目描述给定一个含有 n 个正整数数组一个整数 target 。.../problems/spiral-matrix-ii/5.1、题目描述给你一个整数 n ,生成一个包含 1 n2 所有元素,且元素按顺时针顺序螺旋排列 n x n 正方形矩阵 matrix 。

5200

数组排序问题-LeetCode 905、922、1122、451(哈希表,双指针)

编程题 【LeetCode #905】按奇偶排序数组 给定一个非负整数数组 A,返回一个数组,在该数组中, A 所有偶数元素之后跟着所有奇数元素。 你可以返回满足此条件任何数组作为答案。...) 链接:https://leetcode-cn.com/problems/sort-array-by-parity 【LeetCode #922】按奇偶排序数组 II 给定一个非负整数数组 A, A..., arr2 中元素各不相同 arr2 中每个元素都出现arr1 中 对 arr1 中元素进行排序,使 arr1 中项相对顺序和 arr2 中相对顺序相同。...,首先遍历记录arr1中各个元素个数,然后以arr2中元素为key,将其中元素按照相对顺序写入res中,同时记录数减一。...) 链接:https://leetcode-cn.com/problems/relative-sort-array 【LeetCode #451】根据字符出现频率排序 给定一个字符串,请将字符串里字符按照出现频率降序排列

68140

【算法专题】贪心算法

你必须给每个顾客正确找,也就是说净交易是每位顾客向你支付 5 美元。 注意,一开始你手头没有任何钱。 给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付账。...数组和减半最少操作次数 题目链接 -> Leetcode -2208.数组和减半最少操作次数 Leetcode -2208.数组和减半最少操作次数 题目:给你一个整数数组 nums 。...最大数 题目链接 -> Leetcode -179.最大数 Leetcode -179.最大数 题目:给定一组非负整数 nums,重新排列每个顺序(每个数不可拆分)使之组成一个最大整数。...最长连续递增序列 题目链接 -> Leetcode -674.最长连续递增序列 Leetcode -674.最长连续递增序列 题目:给定一个未经排序整数数组,找到最长且 连续递增子序列,并返回该序列长度...跳跃游戏Ⅱ 题目链接 -> Leetcode -45.跳跃游戏Ⅱ Leetcode -45.跳跃游戏Ⅱ 题目:给定一个长度为 n 0 索引整数数组 nums。初始位置为 nums[0]。

10110

前端二进制文件处理

ArrayBuffer ArrayBuffer 对象用来表示对固定长度连续内存空间引用,它是一个字节数组,由于无法直接操作,需要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中数据表示为特定格式...Uint16Array —— 每 2 个字节视为一个 0 65535 之间整数。称为 “16 位无符号整数”。...alert( arr8[0] ); // 1 alert( arr8[1] ); // 232,试图复制 1000,但无法 1000 放进 8 位字节中 类型化数组字节长度是 length 乘以单个...还有两种其他方法: arr.set(fromArr, [offset]) fromArr 中从 offset(默认为 0)开始所有元素复制 arr。...这类似于 slice 方法(同样也支持),但不复制任何内容 —— 只是创建一个新视图,以对给定片段数据进行操作。 有了这些方法,我们可以复制、混合类型化数组,从现有数组创建新数组,等。

1.5K30

算法思想总结:双指针算法

一、移动 . - 力扣(LeetCode) 移动 该题重要信息:1、保持非0元素相对位置。...后面的位置元素进行交换 swap(nums[++des],nums[cur]); } }; 二、复写 . - 力扣(LeetCode)复写 该题重要信息...:1、不要在超过该数组长度位置写入元素(就是不要越界)2、就地修改(就是不能创建新数组)。...arr[des--]=0; } } } }; 三、快乐数 . - 力扣(LeetCode)快乐数 该题关键是:整数变成他每位数平方之和...(如第3题,以及链表带环问题) 注意事项: 其实不单单是环形链表或者是数组,如果我们要研究问题出现循环往复情况时,均可考虑使⽤快慢指针思想。最常用就是快指针走两步,慢指针走一步。

9810

【Day23】力扣:LeetCode算法刷题

三等分 题目描述: 给定一个由 0 和 1 组成数组 arr数组分成 3 个非空部分 ,使得所有这些部分表示相同二进制值。...因为题目允许二进制数中存在前置0,因此,我们唯一能确定长度是第三部分,只需要计算第三份数字1首个数字‘1’下标third原始二进制数组尾部距离即可。...} //三个等分都遍历完了,我们获取题目要求i和j对应位置,(当前len比固定长度一个长度) return new int[]{first+len-1,second...字符串相加 题目描述: 给定两个字符串形式非负整数 num1 和num2 ,计算它们和并同样以字符串形式返回。...你不能使用任何內建用于处理大整数库(比如 BigInteger), 也不能直接输入字符串转换为整数形式。

24620

leetcode199场周赛

T1:重新排列字符串 给你一个字符串 s 和一个 长度相同 整数数组 indices 。 请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示位置。...很简单,新开辟一个数组直接按规则一位一位复制过去即可。...有一个开关可以用于翻转灯泡状态,翻转操作定义如下: 选择当前配置下任意一个灯泡(下标为 i ) 翻转下标从 i n-1 每个灯泡 翻转时,如果灯泡状态为 0 就变为 1,为 1 就变为 0...给你二叉树根节点 root 和一个整数 distance 。...当其获得左右孩子收集信息分别记做leftInfo,rightInfo,这两个list中距离一一见面,统计出小于等于给定长度数目,最后leftInfo和rightInfo中长度加1并合并返回给其上一层

44430

LeetCode刷题指南(字符串)

因为键范围很小,因此可以使用长度为 26 整型数组对字符串出现字符进行统计,然后比较两个字符串出现字符数量是否相同。...使用长度为 256 整型数组来统计每个字符出现个数,每个字符有偶数个可以用来构成回文字符串。...记录一个字符上次出现位置,如果两个字符串中字符上次出现位置一样,那么就属于同构。...编程之美:3.1 s1 = AABCD, s2 = CDAA Return : true 给定两个字符串 s1 和 s2,要求判定 s2 是否能够被 s1 做循环移位得到字符串包含。...字符串中单词翻转 程序员代码面试指南 s = "I am a student" return "student a am I" 每个单词逆序,然后整个字符串逆序

1.6K30

用Js怒刷LeetCode

例:红被排序为红黄,红被排序为红,黄黄,红,红,蓝,黄,红,蓝被排序为红,红,红,黄,黄,蓝,蓝假设条件:输入数组不为null。corner case:如果输入数组长度怎么办?...a,其中1 ≤ ai ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次,找到所有出现两次元素要求Tc: O(n) Sc:O(1)例:输入:4,3,2,7,8,2,3,1输出:2,3...Tc: O(n) Sc:O(n)LeetCode第242题思路: 我们可以使用hash存储每个单词出现次数,再用另一个字符串遍历一次进行减减操作,只要次数有不等于0字母则返回falsevar isAnagram...Tc: O(logn) Sc:O(1)给定目标整数T和按升序排序整数数组A,找到A中索引i,以使A i最接近T。...(index); // 23.第一个出现目标值要求Tc: O(logn) Sc:O(1)给定目标整数T和按升序排序整数数组A,请找到A中T首次出现索引,如果没有这样索引,则返回-1。

2.2K10

用Js怒刷LeetCode_2023-02-27

数组出现次数超过一半数字 要求Tc: O(n) Sc:O(1) LeetCode第169题 思路: 这道题属于火拼问题,见一个sha一个(抵消),最后留下就是超过一半元素。...a,其中1 ≤ ai ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次,找到所有出现两次元素要求Tc: O(n) Sc:O(1) 例: 输入: 4,3,2,7,8,2,3,1 输出...) 要求Tc: O(n) Sc:O(n) LeetCode第242题 思路: 我们可以使用hash存储每个单词出现次数,再用另一个字符串遍历一次进行减减操作,只要次数有不等于0字母则返回false...Tc: O(logn) Sc:O(1) 给定目标整数T和按升序排序整数数组A,找到A中索引i,以使A i最接近T。...6], 4); console.log(index); // 2 3.第一个出现目标值要求Tc: O(logn) Sc:O(1) 给定目标整数T和按升序排序整数数组A,请找到A中T首次出现索引,如果没有这样索引

37010
领券