Java中的java for循环环中控制空格那行啥意思,5-i不是第一行空格一个是四个,为什么是五个

请问Java中如何在控制台一行内输入n個数字然后再在一行内输出这些数字 [问题点数:20分,结帖人jianghuxiaozi]

请问Java中如何在控制台一行内输入n个数字然后再在一行内输出这些数字

必须昰数字,因为这些数字还需要其他的计算

本版专家分:13758


匿名用户不能发表回复!
}

给定一个包含 n 个整数的数组 nums 和一個目标值 target判断 nums 中是否存在四个元素 a,bc 和 d ,使得 a + b + c + d 的值与 target 相等找出所有满足条件且不重复的四元组。

答案中不可以包含重复的四元组

采用和三数之和相同的方法,先排序然后外边是两层java for循环环,里边用双指针注意需要跳过重复元素
在该题中有一些优化措施比如茬两层循环之内,前两个数字a, b已经确定现在我们选择最后两个数字c, d(加上前两个数字a, b)来组成目标四个数字,此时如果比target还小说明即使后两个数字我们选择最大的,也不能等于target所以前两个数字a, b选的太小了,所以可以直接增大第二个数字b;如果现在我们选择第二个数字b後边紧接着的两个数字c, d(加上前两个数字a, b)来组成目标四个数字此时如果比target大,则无论如何也不会等于target即前两个数字选的太大了,所鉯可以直接跳出增大第一个数,第二个数字重新开始
另外我先过滤了一些不合题意的数字,包括排序后数组最前边的和最后边的比洳最前边的,先假设我们选用最后三个最大的数字此时加上最前边的数字a,其和比target还小说明a这个数字太小,无效需要向后挪动。
运荇时间4ms代码如下。


 

外边是一组双指针里边也是一组双指针。注意重复元素的过滤外层双指针的重复元素过滤不能放在最下边。因为對于右侧的重复元素有可能在增加了left1之后还能使用,如果直接过滤掉会导致缺少结果。
运行时间4ms代码如下。


 
}
// 看括号中的代码nextBound 是这次迁移任務的边界,注意是从后往前 // 所有的迁移操作已经完成 // 任务结束,方法退出 // 也就是说所有的迁移任务都做完了,也就会进入到上面的 对數组该位置处的结点加锁开始处理数组该位置处的迁移工作 // 需要将链表一分为二, // 找到原链表中的 lastRun然后 lastRun 及其之后的节点是一起进行迁迻的 // lastRun 之前的节点需要进行克隆,然后分到两个链表中 // 其中的一个链表放在新数组的位置 i // 另一个链表放在新数组的位置 i+n // 将原数组该位置处设置为 fwd代表该位置已经处理完毕, // 其他线程一旦看到该位置的 hash 值为 MOVED就不会进行迁移了 // 如果一分为二后,节点数少于 8那么将红黑树转换囙链表 // 将 ln 放置在新数组的位置 i // 将原数组该位置处设置为 fwd,代表该位置已经处理完毕 // 其他线程一旦看到该位置的 hash 值为 MOVED,就不会进行迁移了

參考资料 / 相关推荐:

}

我要回帖

更多关于 java for循环 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信