1.最后一个单词的长度(简单)
58. 最后一个单词的长度 - 力扣(LeetCode)
给你一个字符串
s
,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串
子字符串
子字符串 是字符串中连续的 非空 字符序列。
class Solution {public int lengthOfLastWord(String s) {int n=s.length()-1;//先要把最后部分的空格整完while(s.charAt(n)==' '){n--;}int count=0;while(n>=0&&s.charAt(n)!=' '){count++;n--;}return count;}
}
2.螺旋矩阵2
59. 螺旋矩阵 II - 力扣(LeetCode)
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
方法一:模拟
public int[][] generateMatrix(int n) {int l=0,r=n-1,t=0,b=n-1;//左右上下分别对应的int[][] matrix=new int[n][n];int num=1,target=n*n;while(num<=target){for(int i=l;i<=r;i++){matrix[t][i]=num++;}t++;//模拟从左到右for(int i=t;i<=b;i++){matrix[i][r]=num++;}r--;//模拟从右到左for(int i=r;i>=l;i--){matrix[b][i]=num++;}b--;//模拟从下到上for(int i=b;i>=t;i--){matrix[i][l]=num++;}l++;}return matrix;}
3.旋转链表
61. 旋转链表 - 力扣(LeetCode)
方法一:闭合为环
思路及算法
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode rotateRight(ListNode head, int k) {if(k==0||head==null||head.next==null){return head;}int n=1;ListNode iter=head;//找到iter//看一共有几个节点while(iter.next!=null){iter=iter.next;n++;}int add=n-k%n;if(add==n){return head;}//化成环iter.next=head;while(add-->0){iter=iter.next;}ListNode ret=iter.next;//头节点iter.next=null;return ret;}
}
4.不同路径
62. 不同路径 - 力扣(LeetCode)
方法一:动态规划
class Solution {public int uniquePaths(int m, int n) {int[][] f = new int[m][n];for (int i = 0; i < m; ++i) {f[i][0] = 1;}for (int j = 0; j < n; ++j) {f[0][j] = 1;}for (int i = 1; i < m; ++i) {for (int j = 1; j < n; ++j) {f[i][j] = f[i - 1][j] + f[i][j - 1];}}return f[m - 1][n - 1];}
}
5.不同路径2
63. 不同路径 II - 力扣(LeetCode)
方法一:动态规划
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int n = obstacleGrid.length, m = obstacleGrid[0].length;int[] f = new int[m];f[0] = obstacleGrid[0][0] == 0 ? 1 : 0;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (obstacleGrid[i][j] == 1) {f[j] = 0;continue;}if (j - 1 >= 0 && obstacleGrid[i][j - 1] == 0) {f[j] += f[j - 1];}}}return f[m - 1];}
}