当前位置:网站首页>LeetCode 1089. Duplicate zero
LeetCode 1089. Duplicate zero
2022-07-03 09:01:00 【Sasakihaise_】
【 queue 】 Didn't think of a good way , So we can only temporarily store the data in the queue to simulate
1. If the current number is not 0, Directly enter the queue
2. If the current number is 0, Take two. 0 In the queue
3. Modify the current position to the head of the queue
class Solution {
public void duplicateZeros(int[] arr) {
Queue<Integer> queue = new LinkedList();
for(var i = 0; i < arr.length; i++){
if(arr[i] != 0) queue.offer(arr[i]);
else {
queue.offer(0); queue.offer(0);
}
arr[i] = queue.poll();
}
}
}【 Double pointer 】 In fact, there is no need to queue , We can use double pointers to see the number of numbers we really need to go through the size of the original array , Then modify the array from back to front .
Take up a :1,0,2,3,0,4,5,0
Set double pointer i,j When opening, it points to 0,j For the faster pointer
1.i = j = 0,nums[i] != 0,i and j Go back one
2.i = j = 1, nums[i] == 0, i Go back to 1,j Go back to 2
until j Go to the n-1, here i The position of is the limit of the numerical value that the modified array can reach .
【 details 】0,1,0,0 This situation , Should be 0,0,1,0, But we found that i The pointer goes to the third 0 The location of , and j Already exceeded 4, So in this special case, we need to make an extra judgment .
class Solution {
// Double pointer 9:44 10
public void duplicateZeros(int[] arr) {
int i = 0, j = 0, flag = 0;
while(j < arr.length){
if(arr[i] == 0){
j++;
if(j == arr.length) flag = 1;
else j++;
}
else j++;
i++;
}
i--;
for(j = arr.length - 1; j >= 0;){
if(arr[i] == 0){
if(flag == 1){
arr[j--] = 0; flag = 0;
}else{
arr[j--] = 0; arr[j--] = 0;
}
}else{
arr[j--] = arr[i];
}
i--;
}
}
}
边栏推荐
- Markdown learning
- AcWing 785. 快速排序(模板)
- Using variables in sed command
- Annotations simplify configuration and loading at startup
- Introduction to the usage of getopts in shell
- How to use Jupiter notebook
- Format - C language project sub file
- LeetCode 715. Range 模块
- <, < <,>, > > Introduction in shell
- Too many open files solution
猜你喜欢

How to use Jupiter notebook

SQL statement error of common bug caused by Excel cell content that is not paid attention to for a long time

Try to reprint an article about CSDN reprint

LeetCode 30. 串联所有单词的子串

MySQL three logs

常见渗透测试靶场

Query XML documents with XPath

Phpstudy 80 port occupied W10 system

Deeply understand the underlying data structure of MySQL index

LeetCode 1089. 复写零
随机推荐
Apache startup failed phpstudy Apache startup failed
Try to reprint an article about CSDN reprint
第一个Servlet
too many open files解决方案
拯救剧荒,程序员最爱看的高分美剧TOP10
Convert video to GIF
PHP mnemonic code full text 400 words to extract the first letter of each Chinese character
How to place the parameters of the controller in the view after encountering the input textarea tag in the TP framework
22-05-26 西安 面试题(01)准备
数位统计DP AcWing 338. 计数问题
Memory search acwing 901 skiing
22-06-27 Xian redis (01) commands for installing five common data types: redis and redis
低代码起势,这款信息管理系统开发神器,你值得拥有!
传统企业数字化转型需要经过哪几个阶段?
22-06-27 西安 redis(01) 安装redis、redis5种常见数据类型的命令
[concurrent programming] concurrent security
Es8 async and await learning notes
[rust notes] 06 package and module
即时通讯IM,是时代进步的逆流?看看JNPF怎么说
[rust notes] 11 practical features