1. 程式人生 > 其它 >力扣_排序和搜尋

力扣_排序和搜尋

合併兩個有序陣列

//設定一個長度為n+m的新陣列用於存陣列nums1和陣列num2的值 //迴圈比較nums1和nums2中的值,將兩者中小的存入在nums中,並且序號加1 //迴圈直到有個陣列的序號已經等於陣列長度,那麼將還沒到的陣列剩下元素存入在nums中 classSolution{ publicvoidmerge(int[]nums1,intm,int[]nums2,intn){ //設定新陣列 int[]temp=newint[m+n]; //用於標識陣列nums1和nums2的下標和nums的下標 intindex=0; inti=0; intj=0; while(i<m&&j<n){
if(nums1[i]<=nums2[j]) temp[index++]=nums1[i++]; else temp[index++]=nums2[j++]; } for(;i<m;){ temp[index++]=nums1[i++]; } for(;j<n;){ temp[index++]=nums2[j++]; } //再把陣列temp中的值賦給nums1 for(intk=0;k<m+n;k++){ nums1[k]=temp[k]; } } }

第一個錯誤的版本

/*TheisBadVersionAPIisdefinedintheparentclassVersionControl.
booleanisBadVersion(intversion);*/ //早第一個出錯的版本,即找最左邊的版本 //可以使用二分法,不斷的往左方推移 publicclassSolutionextendsVersionControl{ publicintfirstBadVersion(intn){ //設初始版本1就是錯的 intl=1; intr=n; //二分法 while(l<r){ intmid=l+(r-l)/2; if(isBadVersion(mid)){ r=mid; }else{ l=mid+1; } } returnl; } }