跟我打卡LeetCode 58最后一个单词长度59螺旋矩阵Ⅱ60排列序列
原創公眾號:bigsai
關注后回復進群即可加入力扣打卡群,歡迎劃水。近期打卡:
LeetCode 47全排列Ⅱ&48旋轉圖像
LeetCode 49字母異位詞分組&50pow(x,n)&51八皇后
LeetCode打卡 52八皇后Ⅱ&53最大子序和&54螺旋矩陣
LeetCode 55跳躍游戲&56合并區間&57插入區間
最后一個單詞長度
題目描述
給定一個僅包含大小寫字母和空格 ’ ’ 的字符串 s,返回其最后一個單詞的長度。如果字符串從左向右滾動顯示,那么最后一個單詞就是最后出現的單詞。
如果不存在最后一個單詞,請返回 0 。
說明:一個單詞是指僅由字母組成、不包含任何空格字符的 最大子字符串。
示例:
輸入: “Hello World”
輸出: 5
分析
這題其實很簡單,就是三個步驟模擬這個過程就可以了:
具體代碼:
public int lengthOfLastWord(String s) {if(s.length()==0)return 0;char va[]=s.toCharArray();int index=va.length-1;while (index>=0&&va[index]==' ') {index--;}int i;for( i=index;i>=0;i--){if(va[i]==' '){break;}}return index-i;}螺旋矩陣Ⅱ
給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。
示例:
輸入: 3
輸出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
按照數學方法遍歷即可,遍歷同時維護一個常數自增賦值,考慮奇數偶數即可。
最小邊為偶數情況:
最小邊長為奇數需要特殊考慮下。
具體代碼為:
排列序列
給出集合 [1,2,3,…,n],其所有元素共有 n! 種排列。
按大小順序列出所有排列情況,并一一標記,當 n = 3 時, 所有排列如下: "123" "132" "213" "231" "312" "321"給定 n 和 k,返回第 k 個排列。
示例 1:
輸入:n = 3, k = 3
輸出:“213”
示例 2:
輸入:n = 4, k = 9
輸出:“2314”
示例 3:
輸入:n = 3, k = 1
輸出:“123”
提示:
1 <= n <= 9
1 <= k <= n!
分析:
本題的話需要考慮數據排列的規律。先從整體宏觀思路來分析:
n個數的排列組合的個數,有n!(n階乘)種情況。你要知道當前層次有多少個元素可以參加排列組合,如果當前層有n個元素參加排列組合,第K個排列的第一個元素就是第k/(n-1)!個,鎖定第一個元素后再將k求余(n-1)!再去鎖定下一個元素直到結束。中途可以借助boolean數組標記元素使用過和未使用的。
具體實現的代碼為:
public String getPermutation(int n, int k) {int jiecheng[]=new int[10];jiecheng[0]=1;for(int i=1;i<10;i++){jiecheng[i]=jiecheng[i-1]*i;}boolean jud[]=new boolean[n+1];StringBuilder sBuilder=new StringBuilder();int len=n-1;k--;while (len>=0) {int va=k/jiecheng[len];//在剩下的第幾個區間int team=0;for(int i=1;i<=n;i++){if(jud[i])continue;if(team==va)//找到有效的第幾個{jud[i]=true;sBuilder.append(i);break;}team++;}k=k%jiecheng[len];len--;}return sBuilder.toString(); }最后
本次打卡結束了,明日繼續更新,懇請csdn的朋友們幫個忙🙏,微信搜索「bigsai」關注我的原創公眾號,新人初期希望大家能夠支持一下,白嫖電子書,回復「進群」加入力扣打卡群,歡迎來撩謝謝!
總結
以上是生活随笔為你收集整理的跟我打卡LeetCode 58最后一个单词长度59螺旋矩阵Ⅱ60排列序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试官:谈谈Redis缓存和MySQL数
- 下一篇: 「八大排序算法」16张图带你搞懂基数排序