一个不定长数组 下标0 值为 1 下标 2 和 3 值为null,下标 4 值为 5
现在 需要 将null值替换最近的不为null的值
比如
{1,2, null, null, 5, 6, null};
替换为 {1,2, 2, 5, 5, 6, 6};
我使用的最暴力的遍历循环做的,但这样不是最优的
看上去应该是用二分查找来,但没想明白改怎么来?
帮忙指点下
一个不定长数组 下标0 值为 1 下标 2 和 3 值为null,下标 4 值为 5
现在 需要 将null值替换最近的不为null的值
比如
{1,2, null, null, 5, 6, null};
替换为 {1,2, 2, 5, 5, 6, 6};
我使用的最暴力的遍历循环做的,但这样不是最优的
看上去应该是用二分查找来,但没想明白改怎么来?
帮忙指点下
艹,看错了,看成了 {1,2, 2, 2, 5, 6, 6}
了。。。如果照题主的意思,是生成快照同步替换,那null中间的null确实处理不了
从题主的示例{1,2, null, null, 5, 6, null}
转化为 {1,2, 2, 5, 5, 6, 6}
可以看出来:
那么可以推断出:
//大概思路. 从中间劈开,前边一段,后边一段,一起算.不是更快吗
for(int i = 1,int y = arr.length/2; i<arr.length/2 | y<arr.length; i++,y++){
if(arr[i] == null && arr[i] |= null
arr[i] = arr[i];
}
}
感觉题目不够完整啊。简单理解为不存在连续三个的null。那就可以用栈吧
数字栈和null栈
读到数字,如果数字栈为空且null栈不为空可以填写一个null值,如果null栈也为空就压到数字栈
如果数字栈不为空,出栈元素在压栈
读到null,如果数字栈不为空就填写一个null值
如果数字栈为空就压null栈
描述的很简陋,而且只在1.没有连续三个null的情况下2.开头不是null且结尾不是连续两个null
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答749 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读