当前位置:网站首页>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--;
}
}
}
边栏推荐
- Character pyramid
- ES6 promise learning notes
- Markdown learning
- Using DLV to analyze the high CPU consumption of golang process
- Find the combination number acwing 886 Find the combination number II
- Alibaba canal actual combat
- Facial expression recognition based on pytorch convolution -- graduation project
- 浅谈企业信息化建设
- [rust notes] 05 error handling
- [rust notes] 09- special types and generics
猜你喜欢

Final review of Database Principles

注解简化配置与启动时加载

AcWing 787. 归并排序(模板)

LeetCode 508. 出现次数最多的子树元素和

Binary tree traversal (first order traversal. Output results according to first order, middle order, and last order)

LeetCode 241. 为运算表达式设计优先级

Sending and receiving of request parameters

ES6 promise learning notes
![[concurrent programming] thread foundation and sharing between threads](/img/26/60fbfe65b186867a3b1cb58d481226.jpg)
[concurrent programming] thread foundation and sharing between threads

Facial expression recognition based on pytorch convolution -- graduation project
随机推荐
浅谈企业信息化建设
PHP mnemonic code full text 400 words to extract the first letter of each Chinese character
Common DOS commands
String splicing method in shell
Using DLV to analyze the high CPU consumption of golang process
我們有個共同的名字,XX工
LeetCode 532. 数组中的 k-diff 数对
createjs easeljs
Method of intercepting string in shell
[concurrent programming] concurrent tool class of thread
求组合数 AcWing 885. 求组合数 I
Phpstudy 80 port occupied W10 system
Divide candy (circular queue)
LeetCode 535. TinyURL 的加密与解密
树形DP AcWing 285. 没有上司的舞会
[rust notes] 07 structure
20220630 learning clock in
一个优秀速开发框架是什么样的?
Log4j2 vulnerability recurrence and analysis
[rust notes] 13 iterator (Part 1)