当前位置:网站首页>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--;
}
}
}
边栏推荐
- Use of sort command in shell
- TP5 multi condition sorting
- MySQL three logs
- The method of replacing the newline character '\n' of a file with a space in the shell
- Concurrent programming (III) detailed explanation of synchronized keyword
- Methods of checking ports according to processes and checking processes according to ports
- Method of intercepting string in shell
- [rust notes] 06 package and module
- JS ternary operator - learning notes (with cases)
- Deeply understand the underlying data structure of MySQL index
猜你喜欢
随机推荐
Facial expression recognition based on pytorch convolution -- graduation project
Drawing maze EasyX library with recursive backtracking method
[rust notes] 13 iterator (Part 1)
Analysis of Alibaba canal principle
Arbre DP acwing 285. Un bal sans patron.
Divide candy (circular queue)
记忆化搜索 AcWing 901. 滑雪
cres
Summary of methods for counting the number of file lines in shell scripts
Gaussian elimination acwing 883 Gauss elimination for solving linear equations
Slice and index of array with data type
LeetCode 75. 颜色分类
低代码前景可期,JNPF灵活易用,用智能定义新型办公模式
Find the combination number acwing 885 Find the combination number I
Monotonic stack -42 Connect rainwater
Find the combination number acwing 886 Find the combination number II
Alibaba canaladmin deployment and canal cluster Ha Construction
too many open files解决方案
一个优秀速开发框架是什么样的?
干货!零售业智能化管理会遇到哪些问题?看懂这篇文章就够了









