leetcode 4
来源:互联网 发布:伴奏制作软件 编辑:程序博客网 时间:2024/06/11 18:02
这是我第一次刷leetcode做的最顺利的一道题了吧,但是还不是一次性提交的,下面是我的代码:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int l1=nums1.size(),l2=nums2.size(),sz=nums1.size()+nums2.size(),i=0,j=0; int m,n; vector<int> tmp; while(i<l1||j<l2) { m=i<l1?nums1[i]:numeric_limits<int>::max(); n=j<l2?nums2[j]:numeric_limits<int>::max(); if(m<=n) { i++; tmp.push_back(m); } else { j++; tmp.push_back(n); } } if(sz%2) return double(tmp[sz/2]); else return (tmp[sz/2-1]+tmp[sz/2])/2.0; }
我没能一次性AC,主要是以下几个错误:
第一次,没能正确处理I++和j++,虽然这是来自归并排序算法的老套路了,但还是生疏了啊出错了;
第二次,我懒得查表示整数最大值的方法了,就私自把最大值设为10000了,没想到,还有更大数字的测试。。。
第三次,最后一步return没考虑到整数除以整数还是整数呵呵呵呵好气啊
好了,在分析一些优秀的代码
double findMedianSortedArrays(vector<int>&nums1,vector<int>&nums2){ int sz1=nums1.size(),sz2=nums2.size(),sz=sz1+sz2,mid1=sz/2,mid2=sz/2-1+sz%2,count=0,i=0,j=0,sum=0; while(i<sz1||j<sz2) { int m=i<sz1?nums1[i]:numeric_limits<int>::max(); int n=j<sz2?nums2[j]:numeric_limits<int>::max(); m<=n?i++:j++; if(count==mid1) sum+=m<=n?m:n;
if(count==mid2)
sum+=m<=n?m:n; count++; } return sum/2;}
其实这个解法有两点值得学习,首先我自己写的保存了合并后的数组,而就本题而言,这是没必要的;其次它在处理mid2=sz/2-1+sz%2这个还是很新颖的;
通过本题我又被迫复习了一下极限的表示法,记得头文件是limits.
阅读全文
0 0
- LeetCode-4
- LeetCode--4
- LeetCode(4)
- LeetCode-4*
- LeetCode(4)
- leetcode 4
- LeetCode #4
- LeetCode(4)
- LeetCode: 4 Sum
- LeetCode: 4Sum
- LeetCode 4Sum
- Leetcode: 4SUM
- 【leetcode】 4 sum
- LeetCode 4Sum
- leetcode 44: 4Sum
- [Leetcode] 4 Sum [Unsolved]
- 【leetcode】4Sum
- [LeetCode]4Sum
- hdu6075Questionnaire(高校第四场)
- Json相关随笔
- The Suspects POJ
- tensorflow——tf.one_hot以及tf.sparse_to_dense函数
- thread和runable的区别
- leetcode 4
- 微信小程序开发总结
- PyCharm 注册激活方法
- hihoCoder 1078 区间查询线段树
- Java:关于ObjectOutputStream导致的EOFException问题
- D
- HDU 4283:You Are the One(区间DP)
- iOS是最安全的?苹果iOS恶意软件数量增速首次超过Android
- Java中遍历数组