class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { //常规的遍历方法时间是O(N)的,需要使用二分法,这样对于不重复的数组,就能实现O(logN)的时间 int l=0,r=rotateArray.size()-1; if(r<0)return NULL;//空数组 int m=0; while(l<r){//当左指针小于右指针的时候,继续二分法 //下面分两种情况讨论:①数…
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. 牛客网链接 js代码 function minNumberInRotateArray(rotateArray) { // write code here let low = 0 let high = rotat…
剑指 Offer 39. 数组中出现次数超过一半的数字 Offer_39 题目描述 方法一:使用map存储数字出现的次数 public class Offer_39 { public int majorityElement(int[] nums) { Map<Integer,Integer> map = new HashMap<>(); int len = nums.length; int ans = -1; for(int num : nums){ int cnt = 0; if…
剑指 Offer 03. 数组中重复的数字 哈希表/set class Solution { public int findRepeatNumber(int[] nums) { HashSet<Integer> set = new HashSet<>(); for(int num : nums){ if(set.contains(num)) return num; set.add(num); } return -1; } } 思路:利用set的特性 原地置换 class Solut…