#华为机试#
华为od机试,求数组内元素之和的最小绝对值,并返回那两个元素,过了65% case。其他案例不知道为什么没过,求各位大神解惑🙏
全部评论
排序,然后左右指针,如果(绝对值)左比右大:左++, 如果(绝对值)右比左大:右--;每次记住他们的和直到左超越右或者右超越左
4 回复 分享
发布于 2021-04-12 01:48
请问这是什么岗啊
2 回复 分享
发布于 2021-03-15 12:55
我的理解先排序,再二分查找
1 回复 分享
发布于 2021-03-18 20:13
list1 = list(map(int,input().split())) listfu = [] min1 = 10000000 listzheng = [] listij = [] for i in list1: if i<0: listfu.append(i) else: listzheng.append(i) for i in listfu: for j in listzheng: if i + j < min1: min1 = i + j listij.append([i,j]) print(' '.join(map(str,listij[-1])),min1) #print(listfu,listzheng)
1 回复 分享
发布于 2021-07-22 11:54
nums = list(map(int, input().split())) nums[:] = sorted(nums) list1 = [] l = 0 r = len(nums)-1 mins = nums[l]+nums[r] while r>l: if abs(nums[l] + nums[r])<abs(mins): mins = nums[l] + nums[r] list1.append([nums[l],nums[r]]) elif abs(nums[l])>abs(nums[r]): l+=1 else: r -=1 print(' '.join(map(str,list1)),mins) #这是复杂度为n的双指针
1 回复 分享
发布于 2021-08-04 22:15
应该是复杂度问题 你写的是O(N^2)吗?
点赞 回复 分享
发布于 2021-03-17 21:25
qsort一下,然后从中间向两边查找
点赞 回复 分享
发布于 2021-03-18 10:17
两个列表 一个放正数 一个放负数 分别排序 都取最小 正数列表没有 取最小两位负数 负数列表没有 取最小两位正数
点赞 回复 分享
发布于 2021-03-19 10:56
我是95%
点赞 回复 分享
发布于 2021-03-22 23:30
这个应该先从小到大排序,全正数或全负数好说;否则找到负数和正数的分界点i,j,然后依次遍历下标0-i以及j-(length-1),按数***算结果,一定是负数最大值和正数最小值相加后绝对值最小,因此遍历是i--->0;j----->leng-1;
点赞 回复 分享
发布于 2021-03-27 15:48
动态规划?
点赞 回复 分享
发布于 2021-03-27 23:27
你怎么知道通过65%case
点赞 回复 分享
发布于 2021-03-28 11:52
排好序 一个指针指向l 一个指针指向e 如果l和r对应的两数之和大于0 让l++ 否则r-- 每次移动指针后更新绝对值最小值
点赞 回复 分享
发布于 2021-04-04 08:55
请问下不是有监控吗,这怎么拍的题呀
点赞 回复 分享
发布于 2021-04-07 15:43
排序,然后左右双指针向中间走吧,如果往右走绝对值变小l++,否则r--
点赞 回复 分享
发布于 2021-04-07 19:35
昨天没参加 今天参加可以吗我看是试卷长期有效
点赞 回复 分享
发布于 2021-04-08 11:46
滑动窗口
点赞 回复 分享
发布于 2021-04-11 17:23
用一个栈来维护
点赞 回复 分享
发布于 2021-04-12 09:46
感觉是双指针
点赞 回复 分享
发布于 2021-04-12 22:17
排序左右双指针,
点赞 回复 分享
发布于 2021-04-16 12:36

相关推荐

01-14 19:01
吉首大学 Java
黑皮白袜臭脚体育生:加个项目吧,一般需要两个项目一业务一轮子呢,简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写
点赞 评论 收藏
分享
想顺利毕业的猕猴桃在看牛客:好几个月没面试了,腾讯留面评吗
点赞 评论 收藏
分享
评论
19
4
分享

创作者周榜

更多
牛客网
牛客企业服务