LeetCode—数组(1)
2015-07-22 14:51
323 查看
声明:写这篇博文主要是记录自己刷leetcode oj的情况,也方便自己以后随时查阅复习,在刷题的过程中,有借鉴了别人好的思想,自己绝对没有抄袭的意图。特此声明。
未完,会在以后不断更新
1.Find Minimum in Rotated Sorted Array
描述:给一个旋转后的排序数组,找到最小的数,数组中不包含重复数思路:二分查找
代码:
public int findMin(int[] nums) { int index1=0; int index2=nums.length-1; int indexMid=index1; while(nums[index1]>nums[index2]){ if((index2-index1)==1){//只有两个数 indexMid=index2; break; } indexMid=(index1+index2)/2; if(nums[indexMid]>=nums[index1]) index1=indexMid; if(nums[indexMid]<=nums[index2]) index2=indexMid; } return nums[indexMid]; }
2.
Find Minimum in Rotated Sorted Array II
描述:给一个旋转后的排序数组,找到最小的数,数组中包含重复数。代码:
public int findMin(int[] nums) { int start=0; int end=nums.length-1; int midIndex=start; while(nums[end]<=nums[start]){ if(end-start==1){ midIndex=end; break; } midIndex=(start+end)/2; if(nums[midIndex]==nums[start]&&nums[midIndex]==nums[end]){//当中间数和首尾的数都相等时,这时候二分查找就派不上用场了,只能从头遍历 return MinInOrder(nums,start,end); } if(nums[midIndex]>=nums[start]){ start=midIndex; } else if(nums[midIndex]<=nums[end]){ end=midIndex; } } return nums[midIndex]; } public int MinInOrder(int[] nums,int start,int end){ int result=nums[start]; for(int i=start+1;i<=end;i++){ if(result>nums[i]){ result=nums[i]; } } return result; }
相关文章推荐
- 环形RNA预测注意事项
- Spring MVC 4常用的那些注解 .
- windows编程--网络编程学习--winsock编程(2)
- html5 绘制椭圆
- Android访问网络 使用HttpURLConnection还是HttpClient?
- 学习笔记:js、css、html判断浏览器的各种版本
- maven2 环境搭建(1)
- 微信企业号开发:消息类型与区别
- C宏定义#和##的用法
- iOS高仿城觅项目(开发思路和代码)
- ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明
- MySQL无法重启问题解决Warning: World-writable config file ‘/etc/my.cnf’ is ignored
- 欢迎使用CSDN-markdown编辑器
- 图解mapreduce原理和执行过程
- iOS后台任务
- background 和IMG的差异
- ASP.NET仿新浪微博下拉加载更多数据瀑布流效果
- PAT (Basic Level) Practise (中文)1026. 程序运行时间(15) C语言
- 用Webbench进行网站压力测试
- codevs1060