中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

信息網(wǎng)站建設(shè)預(yù)算windows優(yōu)化大師和360哪個(gè)好

信息網(wǎng)站建設(shè)預(yù)算,windows優(yōu)化大師和360哪個(gè)好,青島嶗山區(qū)網(wǎng)站建設(shè),做藥品網(wǎng)站有哪些文章目錄前言一、螺旋矩陣||(力扣59)二、螺旋矩陣(力扣54)三、順時(shí)針打印矩陣(劍指 Offer29)四、在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(力扣34)【二分查找】五、有多少小于當(dāng)…

文章目錄

  • 前言
  • 一、螺旋矩陣||(力扣59)
  • 二、螺旋矩陣(力扣54)
  • 三、順時(shí)針打印矩陣(劍指 Offer29)
  • 四、在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(力扣34)【二分查找】
  • 五、有多少小于當(dāng)前數(shù)字的數(shù)字(力扣1365)
  • 六、有效的山脈數(shù)組(力扣941)【雙指針】
  • 七、平均等待時(shí)間(力扣1701)
  • 八、獨(dú)一無二的出現(xiàn)次數(shù)(力扣1207)
  • 每日一題:二進(jìn)制數(shù)轉(zhuǎn)字符串(力扣05.02)
  • 每日一題:保證文件名唯一(力扣1487)


前言

1、螺旋矩陣||
2、螺旋矩陣
3、順時(shí)針打印矩陣
4、在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置
5、有多少小于當(dāng)前數(shù)字的數(shù)字
6、有效的山脈數(shù)組
7、平均等待時(shí)間
8、獨(dú)一無二的出現(xiàn)次數(shù)


一、螺旋矩陣||(力扣59)

給定一個(gè)正整數(shù) n,生成一個(gè)包含 1 到 n^2 所有元素,且元素按順時(shí)針順序螺旋排列的正方形矩陣。
在這里插入圖片描述
注意:循環(huán)次數(shù),以及只有一個(gè)字符時(shí)的情況,或者轉(zhuǎn)完一圈后,剩一個(gè)字符的情況。繞啊繞

class Solution {public int[][] generateMatrix(int n) {int loop = 0;//循環(huán)次數(shù)int[][] res = new int[n][n];int count =1; int start =0;int i,j;while(loop++<n/2){ for(j=start;j<n-loop;j++){res[start][j] = count++;}for(i=start;i<n-loop;i++){res[i][j] = count++;}for(;j>=loop;j--){res[i][j] = count++;}for(;i>=loop;i--){res[i][j] = count++;}start++;}if(n%2==1){  //既包括了一個(gè)字符的情況 也包括了轉(zhuǎn)完一圈后剩一個(gè)字符的情況res[start][start]=count;}return res;}
}

方法二:
該方法可以作為一個(gè)模板

class Solution {public int[][] generateMatrix(int n) {int[][] res = new int[n][n];int left = 0;int right = n-1;int top = 0;int bottom = n-1;int count = 1;res[0][0] =1;while(true){for(int i=left;i<=right;i++){res[top][i] = count++;}if(++top>bottom) break;for(int j=top;j<=bottom; j++){res[j][right] = count++;}if(--right<left) break;for(int i=right;i>=left;i--){res[bottom][i] = count++;}if(--bottom<top) break;for(int j=bottom;j>=top;j--){res[j][left] = count++;}if(++left>right) break;}return res;}
}

二、螺旋矩陣(力扣54)

給你一個(gè) m 行 n 列的矩陣 matrix ,請按照 順時(shí)針螺旋順序 ,返回矩陣中的所有元素。

class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res = new ArrayList<Integer>();int left = 0;int right = matrix[0].length-1;int top = 0;int bottom = matrix.length-1;while(true){for(int i=left;i<=right;i++){res.add(matrix[top][i]);}if(++top>bottom) break;for(int j=top;j<=bottom;j++){res.add(matrix[j][right]);}if(--right<left) break;for(int i=right;i>=left;i--){res.add(matrix[bottom][i]);}if(--bottom<top) break;for(int j=bottom;j>=top;j--){res.add(matrix[j][left]);}if(++left>right) break;}return res;}
}

三、順時(shí)針打印矩陣(劍指 Offer29)

輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字。
與上一題的區(qū)別,這道題可以從0開始,也就是一開始的matrix={}
此時(shí)如果
int bottom = matrix.length-1;
int right = matrix[0].length-1;
放在開頭就會(huì)報(bào)錯(cuò)
在這里插入圖片描述
因此需要加一行:

if(matrix.length==0 ||matrix[0].length==0){return new int[0];}
class Solution {public int[] spiralOrder(int[][] matrix) {int top =0;int left = 0;if(matrix.length==0 ||matrix[0].length==0){return new int[0];}int bottom = matrix.length-1;int right = matrix[0].length-1;int[] res = new int[(bottom+1)*(right+1)];int k = 0;res[0]=1;while(true){for(int i=left;i<=right;i++){res[k++] = matrix[top][i];}if(++top>bottom) break;for(int j=top;j<=bottom;j++){res[k++] = matrix[j][right];}if(--right<left) break;for(int i=right;i>=left;i--){res[k++] = matrix[bottom][i];}if(--bottom<top) break;for(int j=bottom;j>=top;j--){res[k++] = matrix[j][left];}if(++left>right) break;}return res;}
}

四、在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(力扣34)【二分查找】

給你一個(gè)按照非遞減順序排列的整數(shù)數(shù)組 nums,和一個(gè)目標(biāo)值 target。請你找出給定目標(biāo)值在數(shù)組中的開始位置和結(jié)束位置。
如果數(shù)組中不存在目標(biāo)值 target,返回 [-1, -1]。

在這里插入圖片描述

class Solution {public int[] searchRange(int[] nums, int target) {int leftBorder = getLeftBoreder(nums,target);int rightBorder = getRightBoreder(nums,target);if(rightBorder==-2 || leftBorder==-2){return new int[]{-1,-1};}if(rightBorder-leftBorder>1){return new int[]{leftBorder+1,rightBorder-1};}else return new int[]{-1,-1};}public int getLeftBoreder(int[] nums, int target){int left = 0;int right = nums.length-1;int mid;int leftBorder=-2;while(left<=right){mid = (left+right)/2;if(nums[mid]>=target){right=mid-1;leftBorder = right;}else{left = mid +1;}}return leftBorder;}public int getRightBoreder(int[] nums, int target){int left = 0;int right = nums.length-1;int mid;int rightBorder=-2;while(left<=right){mid = (left+right)/2;if(nums[mid]<=target){left=mid+1;rightBorder = left;}else{right = mid -1;}}return rightBorder;}
}

五、有多少小于當(dāng)前數(shù)字的數(shù)字(力扣1365)

給你一個(gè)數(shù)組 nums,對于其中每個(gè)元素 nums[i],請你統(tǒng)計(jì)數(shù)組中比它小的所有數(shù)字的數(shù)目。
換而言之,對于每個(gè) nums[i] 你必須計(jì)算出有效的 j 的數(shù)量,其中 j 滿足 j != i 且 nums[j] < nums[i] 。
以數(shù)組形式返回答案。
在這里插入圖片描述

找個(gè)桶,這個(gè)桶用來存放每個(gè)數(shù)字出現(xiàn)的次數(shù),然后依次遍歷這個(gè)桶,處理桶中的數(shù)據(jù)
比如 在案例中
bucket[1] =1
bucket[2] =2
bucket[3] =1
bucket[8] =1
遍歷桶的時(shí)候 :

		int count =0;for(int i=0;i<barcket.length;i++){int temp = barcket[i];barcket[i] = count;count +=temp;}

最后只取桶中我們需要的數(shù)據(jù)

class Solution {public int[] smallerNumbersThanCurrent(int[] nums) {//桶 存放數(shù)字n出現(xiàn)的次數(shù)int[] barcket = new int[101];for(int i:nums){barcket[i]++;}int[] res = new int[nums.length];int count =0;//處理桶for(int i=0;i<barcket.length;i++){int temp = barcket[i];barcket[i] = count;count +=temp;}int k=0;for(int i:nums){res[k++] = barcket[i];}return res;}
}

六、有效的山脈數(shù)組(力扣941)【雙指針】

給定一個(gè)整數(shù)數(shù)組 arr,如果它是有效的山脈數(shù)組就返回 true,否則返回 false。
如果 arr 滿足下述條件,那么它是一個(gè)山脈數(shù)組:
arr.length >= 3
在 0 < i < arr.length - 1 條件下,存在 i 使得:
arr[0] < arr[1] < … arr[i-1] < arr[i]
arr[i] > arr[i+1] > … > arr[arr.length - 1]
在這里插入圖片描述

注意這個(gè)測試用例:
在這里插入圖片描述
先上山, i=1;i<arr.length && arr[i]>arr[i-1];i++
如果 退出這個(gè)循環(huán)后 i依然等于1 或者i等于 arr.length時(shí) 說明上山上不動(dòng)或者一次爬到終點(diǎn)兩種情況 均return false

此時(shí)i指向最高點(diǎn)的下一位

再下山,;i<arr.length && arr[i-1]>arr[i];i++
如果退出循環(huán)后 i可以等于arr.length 說明下山成功 可以下到山腳
如果;i<arr.length && arr[i]>arr[i+1];i++ 退出循環(huán)后 i如果等于arr.length-1 這樣子
就會(huì)出現(xiàn)測試用例的情況

class Solution {public boolean validMountainArray(int[] arr) {int i ;for(i=1;i<arr.length && arr[i-1]<arr[i];i++);//上山爬不動(dòng)或者一次爬到終點(diǎn)if(i==1 || i==arr.length) return false;for(;i<arr.length-1 && arr[i]>arr[i+1];i++);return i==arr.length-1;}
}

七、平均等待時(shí)間(力扣1701)

有一個(gè)餐廳,只有一位廚師。你有一個(gè)顧客數(shù)組 customers ,其中 customers[i] = [arrivali, timei] :
arrivali 是第 i 位顧客到達(dá)的時(shí)間,到達(dá)時(shí)間按 非遞減 順序排列。
timei 是給第 i 位顧客做菜需要的時(shí)間。
當(dāng)一位顧客到達(dá)時(shí),他將他的訂單給廚師,廚師一旦空閑的時(shí)候就開始做這位顧客的菜。每位顧客會(huì)一直等待到廚師完成他的訂單。廚師同時(shí)只能做一個(gè)人的訂單。廚師會(huì)嚴(yán)格按照 訂單給他的順序 做菜

在這里插入圖片描述
類似于先來先服務(wù)調(diào)度算法 ,先計(jì)算到達(dá)時(shí)間, 開始時(shí)間不一定等于到達(dá)時(shí)間,可能上一位顧客結(jié)束比較晚,那么開始時(shí)間就應(yīng)該等到上一位顧客結(jié)束之后 start 和arrival應(yīng)該取較大值,然后等待時(shí)間累加即可

class Solution {public double averageWaitingTime(int[][] customers) {int start=0;double wait =0;for(int[] customer:customers){int arrivali = customer[0];start =Math.max(start,arrivali);  //一定要取最大值 [5,2],[5,4]start +=customer[1];  //結(jié)束時(shí)間wait += start-arrivali; //等待時(shí)間總和}return wait/customers.length;}
}

八、獨(dú)一無二的出現(xiàn)次數(shù)(力扣1207)

給你一個(gè)整數(shù)數(shù)組 arr,請你幫忙統(tǒng)計(jì)數(shù)組中每個(gè)數(shù)的出現(xiàn)次數(shù)。
如果每個(gè)數(shù)的出現(xiàn)次數(shù)都是獨(dú)一無二的,就返回 true;否則返回 false。
在這里插入圖片描述

class Solution {public boolean uniqueOccurrences(int[] arr) {HashMap<Integer,Integer> map = new HashMap<>();for(int i:arr){map.put(i,map.getOrDefault(i,0)+1);} //遍歷數(shù)組 看數(shù)組有沒有重復(fù)的值//統(tǒng)計(jì)不同的出現(xiàn)次數(shù)的數(shù)目。如果不同的出現(xiàn)次數(shù)的數(shù)目等于不同數(shù)字的數(shù)目Set<Integer> times = new HashSet<Integer>();for(Map.Entry<Integer,Integer> x:map.entrySet()){times.add(x.getValue());}return times.size() == map.size();   }
}

每日一題:二進(jìn)制數(shù)轉(zhuǎn)字符串(力扣05.02)

二進(jìn)制數(shù)轉(zhuǎn)字符串。給定一個(gè)介于0和1之間的實(shí)數(shù)(如0.72),類型為double,打印它的二進(jìn)制表達(dá)式。如果該數(shù)字無法精確地用32位以內(nèi)的二進(jìn)制表示,則打印“ERROR”。

class Solution {public String printBin(double num) {StringBuilder ans = new StringBuilder();ans.append("0.");while(num>0 && ans.length()<=32){num = num*2.0;if(num>=1){ans.append("1");num=num-1;}else{ans.append("0");}}return ans.length() <= 32 ? ans.toString() : "ERROR";}
}

每日一題:保證文件名唯一(力扣1487)

給你一個(gè)長度為 n 的字符串?dāng)?shù)組 names 。你將會(huì)在文件系統(tǒng)中創(chuàng)建 n 個(gè)文件夾:在第 i 分鐘,新建名為 names[i] 的文件夾。
由于兩個(gè)文件 不能 共享相同的文件名,因此如果新建文件夾使用的文件名已經(jīng)被占用,系統(tǒng)會(huì)以 (k) 的形式為新文件夾的文件名添加后綴,其中 k 是能保證文件名唯一的 最小正整數(shù) 。
返回長度為 n 的字符串?dāng)?shù)組,其中 ans[i] 是創(chuàng)建第 i 個(gè)文件夾時(shí)系統(tǒng)分配給該文件夾的實(shí)際名稱。
在這里插入圖片描述
創(chuàng)建一個(gè)哈希表,遍歷names數(shù)組,拿到name之后去哈希表中看看有沒有出現(xiàn)過,如果沒有 names數(shù)組不需要做任何操作,哈希表需要記錄一下 此name出現(xiàn)的次數(shù)為1。如果出現(xiàn)過,首先先獲取一下出現(xiàn)了多少次,假設(shè)gta出現(xiàn)了1次,注意:不能直接在出現(xiàn)次數(shù)上+1=2 gta(2),而需要看看names中有沒有這個(gè)次數(shù) 如果有 則次數(shù)需要繼續(xù)++,并且需要修改map中該元素出現(xiàn)的次數(shù)。

class Solution {public String[] getFolderNames(String[] names) {Map<String,Integer> d = new HashMap<>();for(int i=0;i<names.length;i++){if(d.containsKey(names[i])){int k = d.get(names[i]);//獲取出現(xiàn)的次數(shù)while(d.containsKey(names[i] + "(" +k+")")){k++;}//更新值d.put(names[i],k);names[i] += "(" +k+ ")"; }d.put(names[i],1);    }return names;}
}
http://www.risenshineclean.com/news/48462.html

相關(guān)文章:

  • 怎么在自己電腦上建網(wǎng)站今日競彩足球最新比賽結(jié)果查詢
  • 營銷系統(tǒng)有哪些南昌seo排名外包
  • 網(wǎng)站主頁模板友情鏈接檢測平臺(tái)
  • 建一家網(wǎng)站多少錢濰坊網(wǎng)站建設(shè)方案咨詢
  • 游戲類網(wǎng)頁設(shè)計(jì)優(yōu)化推廣
  • 網(wǎng)站建設(shè)設(shè)計(jì)時(shí)代創(chuàng)信好找廣告商的平臺(tái)
  • 企業(yè)網(wǎng)站平臺(tái)如何做網(wǎng)絡(luò)推廣視頻剪輯培訓(xùn)
  • 網(wǎng)站備案主體查詢河南seo優(yōu)化
  • 網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師2022云優(yōu)化
  • 怎做賣東西的網(wǎng)站如何快速網(wǎng)絡(luò)推廣
  • ecshop 獲取網(wǎng)站域名日照網(wǎng)絡(luò)推廣公司
  • 網(wǎng)站pc開發(fā)上海如何寫好軟文
  • 網(wǎng)站流量分析系統(tǒng)百度企業(yè)認(rèn)證怎么認(rèn)證
  • 高性能網(wǎng)站建設(shè)進(jìn)階指南 pdf知乎seo排名帝搜軟件
  • 英語課件做的好的網(wǎng)站百度云資源
  • 企業(yè)網(wǎng)站的建立視頻廣州各區(qū)風(fēng)險(xiǎn)區(qū)域最新動(dòng)態(tài)
  • 做網(wǎng)站的咋掙錢搜索引擎大全全搜網(wǎng)
  • 做網(wǎng)站建設(shè)公司賺錢seo關(guān)鍵詞優(yōu)化排名哪家好
  • 電商網(wǎng)站如何做c2b如何宣傳推廣自己的產(chǎn)品
  • 做神馬網(wǎng)站優(yōu)化快速網(wǎng)絡(luò)營銷推廣策劃方案
  • 廈門區(qū)塊鏈網(wǎng)站開發(fā)網(wǎng)站排名快速提升工具
  • 專做機(jī)械零配件的網(wǎng)站營銷型企業(yè)網(wǎng)站推廣的方法有哪些
  • web網(wǎng)站開發(fā)學(xué)習(xí)seo排名優(yōu)化北京
  • 網(wǎng)站換域名怎么做百度seo多少錢一個(gè)月
  • 無錫市網(wǎng)站搭建學(xué)網(wǎng)絡(luò)運(yùn)營需要多少錢
  • dns是不是做網(wǎng)站用的快手seo軟件下載
  • 馬鞍山網(wǎng)站建設(shè)專業(yè)制seo網(wǎng)頁優(yōu)化工具
  • 老外把金文做的網(wǎng)站翻譯叫什么發(fā)稿服務(wù)
  • 做網(wǎng)站平面一套多少錢seo jsbapp9
  • 電商抖音是c2c還是b2c安徽網(wǎng)站seo公司