LeetCode刷题之旅
LeetCode刷题
chs_502
无基础、无经验、无能力的计算机初学者
展开
-
14. 最长公共前缀
题目地址:14. 最长公共前缀本来的最初的想法是找出最短的字符串然后暴力匹配出最长的公共前缀,但一直报越界的问题,也不知道哪里的问题,这里看了官方的答案,用到了两个方法,indexOf和substring,还是对于一些方法不熟悉,没想到……class Solution { public String longestCommonPrefix(String[] strs) { ...原创 2020-04-13 17:53:22 · 85 阅读 · 0 评论 -
17. 电话号码的字母组合
题目地址:17. 电话号码的字母组合这题有点难到我,每次遇到一个数字就判断一下循环?显然过于冗余,那就想到将每个数字对应的字母放进集合,想到键值对存储,但一个键对应的值又不止一个,那就用一个数组存储,之后再循环取值。用到了递归:import java.util.ArrayList;import java.util.List;class Solution { pub...原创 2020-04-12 18:02:32 · 117 阅读 · 0 评论 -
24. 两两交换链表中的节点
题目地址:24. 两两交换链表中的节点看到这题目也没想太多,常规思维大概就是这样:class Solution { public ListNode swapPairs(ListNode head) { if (head == null || head.next == null) return head; ListNode p...原创 2020-04-12 16:23:59 · 83 阅读 · 0 评论 -
11. 盛最多水的容器
题目地址:11. 盛最多水的容器暴力解法,操作猛如虎,我的代码:class Solution { public int maxArea(int[] height) { int tmp = 0; int max = 0; for (int i = 0; i < height.length - 1; i++) { ...原创 2020-04-12 13:53:54 · 119 阅读 · 0 评论 -
62. 不同路径
题目地址:62. 不同路径动态规划:初始化一个m行n列数组,数组里的数据表示到达这个点存在的路径条数。首先需要考虑边界,因为只能向下或向右,所以边界值都为1,即位于起始点的那一行和那一列数字都是1。到达终点前的一步有两种可能,一种是向右,一种向下,将两种可能的路径条数相加,得到总路径条数:class Solution { public int uniquePaths(int m,...原创 2020-03-30 10:11:33 · 82 阅读 · 0 评论 -
69. x 的平方根
题目地址:69. x 的平方根看到这个题:class Solution { public int mySqrt(int x) { if (x == 1) return 1; for (int i = 1; i < x; i++) { if(i*i <= x && (i+1)...原创 2020-03-29 15:51:30 · 104 阅读 · 0 评论 -
35.搜索插入位置
题目地址:搜索插入位置心想这也太简单:class Solution { public int searchInsert(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { if (nums[i] == target || nums[i] > targ...原创 2020-03-29 11:50:46 · 81 阅读 · 0 评论 -
58.最后一个单词的长度
题目地址:最后一个单词的长度class Solution { public int lengthOfLastWord(String s) { //end到达字符串末尾 int end = s.length() - 1; //先将字符串最后一个单词后面的空格去掉 while(end >= 0 && s...原创 2020-03-29 11:11:58 · 100 阅读 · 0 评论 -
61.旋转链表
题目地址:旋转链表起初想到的思路是不断将最后的节点用头插法插入链表,直到插入k次class Solution { public ListNode rotateRight(ListNode head, int k) { if(head == null || k==0) return head; ListNode tmp = h...原创 2020-03-28 16:21:58 · 86 阅读 · 0 评论 -
70.爬楼梯
题目地址:爬楼梯之前有印象,大概是这样:class Solution { public static int climbStairs(int n) { if (n==1) return 1; else if (n==2) return 2; else retur...原创 2020-03-28 14:59:51 · 88 阅读 · 0 评论 -
66.加一
题目地址:加一感觉很简单,一顿操作猛如虎:class Solution { public int[] plusOne(int[] digits) { int len = digits.length; if(digits[len-1] < 9) digits[len-1] +=1; else{ ...原创 2020-03-28 14:28:17 · 126 阅读 · 0 评论 -
9.回文数
题目地址:回文数看到这个题目的第一反映还是将整数转换为字符串,然后将其前面一半和后面一半进行比较:class Solution { public boolean isPalindrome(int x) { //如果是负数,不是回文数 if (x < 0) { return false; } else {...原创 2020-03-28 13:14:54 · 141 阅读 · 0 评论 -
820.单词的压缩编码
题目地址:单词的压缩编码主要思路就是:判断新的字符串是否是之前已有字符串的后缀,如果是,则不予考虑,进入下一循环,最后返回每个字符串长度加一的总和。其中用到了集合Set,它的特点是不能包含重复元素;String类的substring()方法有两种用法:public String substring(int beginIndex)或public String substri...原创 2020-03-28 11:47:16 · 117 阅读 · 0 评论 -
20.有效的括号
题目地址:有效的括号这道题第一反应就是使用栈,遇到左括号压栈,遇到右括号取栈顶元素看是否匹配,若匹配将栈顶元素出栈继续匹配,若不匹配直接返回false。我写了一个比较粗暴的方法:class Solution { public boolean isValid(String s) { Stack<Character> chs = new Stack<...原创 2020-03-27 23:51:23 · 82 阅读 · 0 评论 -
914.卡牌分组
题目地址:卡牌地址求得数组中每个数字出现的次数,然后求最大公约数,如果大于等于2,则返回true,否则false。由于怎么求最大公约数忘了,查了一下:class Solution { public boolean hasGroupsSizeX(int[] deck) { int[] chs = new int[10000]; //计数,将每个数...原创 2020-03-27 16:30:33 · 116 阅读 · 0 评论 -
7.整数反转
题目地址:整数反转看到这个题目的第一反应就是是不是可以将整数转换成字符串,或者链表,之前做过反转链表的题,但考虑到可能效率低且可能会用到库函数。就想着取模和取余来解决:class Solution{ public int reverse(int x){ int result = 0; while(x!=0){ int tem...原创 2020-03-27 13:49:12 · 74 阅读 · 0 评论 -
2.两数相加
题目地址:两数相加一开始看着题目有点绕,后来大概明白就是从前到后节点相加,当大于9时取余赋值,并在之后运算时进一,结果采用尾插法。class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = new ListNode(-1); L...原创 2020-03-27 12:01:53 · 177 阅读 · 0 评论 -
27.移除元素
题目地址:移除元素看到这个题目的第一反应,就是新建一个新数组将需要的元素复制进去,去掉不需要的元素,但这里明确要求不能使用额外的数组空间,就会想到将需要移除的元素覆盖掉,用两个指针,起始点相同,一个指针移动时跳过需要移除的元素,直到移动到需要保留的元素位置,将值赋给另外一个指针,每次覆盖完成共同前进一步,直到快的指针到达末尾。class Solution { public int...原创 2020-03-27 00:50:58 · 79 阅读 · 0 评论 -
21.合并两个有序链表
题目地址:合并两个有序链表这个题目之前考研复习的时候用C写过,现在用Java实现以下:class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head = new ListNode(-1); ListNode pre = head; ...原创 2020-03-26 20:44:17 · 70 阅读 · 0 评论 -
1.两数之和
题目地址:两数之和一开始反正什么都没考虑,暴力破解,我的代码就是这样:class Solution { public int[] twoSum(int[] nums, int target) { int[] chs =new int[2]; for(int i=0;i<nums.length;i++){ for(int...原创 2020-03-26 18:54:55 · 82 阅读 · 0 评论