leetcode
2020秋招刷题记录
KyrieRay
开发
展开
-
66-70 加一 - 二进制求和 - 文本左右对齐 - x的平方根 - 爬楼梯
文章目录66. 加一67. 二进制求和68. 文本左右对齐 (困难)69. x的平方根70. 爬楼梯66. 加一easy题public class No66 { public int[] plusOne(int[] digits) { int len = digits.length; int carry = 0; for(int i = len - 1; i >= 0; i--){ int a = digits[i]原创 2020-09-21 11:50:33 · 178 阅读 · 0 评论 -
61-65 旋转链表-不同路径-不同路径2-最小路径和-有效数字
61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。思路:对k求链表长度的mod,n = k % length,然后把后面n个节点移到前面就行了/** * @author KyrieLuo * @create 2020/8/4-22:20 */public class No61 { public ListNode rotateRight(ListNode head, int k) { if(head == null||k==原创 2020-08-13 16:07:01 · 159 阅读 · 0 评论 -
56-60 合并区间-插入区间-最后一个单词的长度-螺旋矩阵 II - 第k个排列
56. 合并区间重点是要完成区间的排序,然后用一个List来保存结果Arrays.sort(intervals, (x,y)->x[0]-y[0]);每次新遍历到的列表与当前结果集中的最后一个区间的末尾端点进行比较注意toArray的用法,写成0效果是一样的res.toArray(new int[res.size()][]);res.toArray(new int[0][]);public int[][] merge(int[][] intervals) { int le原创 2020-08-04 15:59:19 · 159 阅读 · 0 评论 -
51-55 N皇后 - N皇后 - 最大子序和 - 螺旋矩阵 - 跳跃游戏
51. N皇后(困难)回溯思路:按行添加皇后,所以行不会发生冲突ArrayList currentQueen,这个是用来存列的index,用一个简单的条件判断语句就能使得currentQueen中不含相同的值,即不发生列冲突那怎么避免对角线冲突呢?这里需要一个小技巧,isDiagonalAttack就是用来判断是否发生对角线冲突的,获取当前所在行和列,遍历在此之前的每一行,因为之前每一行都是存了currentQueen的值的,所以只要遍历过程判断只要有任意一行的点和当前点满足对角线(横坐标纵坐标原创 2020-08-04 11:19:48 · 143 阅读 · 0 评论 -
46-50 全排列 - 全排列II - 旋转图像 - 字母异位词分组 - Pow(x, n)
46. 全排列题目:给定一个 没有重复 数字的序列,返回其所有可能的全排列。思路:回溯用一个boolean数组,空间换时间public List<List<Integer>> permute(int[] nums) { int len=nums.length; List<List<Integer>> res=new ArrayList<>(); if(len==0) return res; boolea原创 2020-08-13 16:19:32 · 156 阅读 · 0 评论 -
41-45 缺失的第一个正数 - 接雨水 - 字符串相乘 - 通配符匹配 - 跳跃游戏 II
41.缺失的第一个正数42.接雨水43.字符串相乘45.跳跃游戏 II原创 2020-08-02 15:56:16 · 144 阅读 · 0 评论 -
36-40 有效的数独 - 解数独 - 外观数列 - 组合总和 - 组合总和 II
38. 外观数列递归我们要求第n个外观数列,一定要获得第n-1个外观数列public String countAndSay(int n) { if(n == 1){ return "1"; } String last = countAndSay(n - 1);//得到上一行的字符串 return getNextString(last);//输出当前行的字符串}public String getNextString(String last){原创 2020-08-02 12:57:12 · 287 阅读 · 0 评论 -
31-35 下一个排列 - 最长有效括号 - 搜索旋转排序数组 - 排序数组中查找元素的第一个和最后一个位置 - 搜索插入位置
31. 下一个排列从右向左找到第一个数字不再递增的位置设为nums[i],然后在nums[i]右边找到一个刚好大于当前位的数字nums[j]交换然后还要将nums[i]右边的数字sort一下就Ok了由于从右向左是递增的,所以可以写一个倒序函数来sort,或者直接用Arrays.sort也行//有一点单调栈的思想在里面//我们其实是从右向左找到第一个数字不再递增的位置,然后从右边找到一个刚好大于当前位的数字即可。public static void nextPermutation(int[]原创 2020-08-02 09:43:50 · 182 阅读 · 0 评论 -
26-30删除排序数组中的重复项/移除元素/实现 strStr()/两数相除/串联所有单词的子串
26. 删除排序数组中的重复项典型快慢指针:i 指针从 0 开始,j 指针从 1 开始,如果 i 和 j 所指数字相等,就一直后移 j 。如果不相等,i 指针后移一位用来保存当前 j 所指的值,然后继续回到 j 的后移中去。public int removeDuplicates(int[] nums) { if (nums.length == 0) return 0; int i = 0; for (int j = 1; j < nums.length; j++)原创 2020-08-01 11:39:06 · 95 阅读 · 0 评论 -
21-25合并两个有序链表/括号生成/合并K个排序链表/两两交换链表中的节点/K 个一组翻转链表
21. 合并两个有序链表public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode prehead = new ListNode(-1);//哨兵 ListNode pre = prehead; while( l1 != null && l2 != null ){ if(l1.val <= l2.val ){ pre.next = l1;原创 2020-07-31 10:38:13 · 120 阅读 · 0 评论 -
16-20最接近的三数之和/电话号码的字母组合/四数之和/删除链表的倒数第N个节点/有效的括号
14. 最长公共前缀纵向比较把所有字符串一排一排放置,比较每一列是否相等时间O(mn),空间O(1)public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0) { return ""; } //第一个字符串的长度 int length = strs[0].length(); int count = strs.length;原创 2020-07-31 09:53:30 · 111 阅读 · 0 评论 -
11.-15盛最多水的容器/整数转罗马数字/罗马数字转整数/最长公共前缀/三数之和
11. 盛最多水的容器双指针长度和高度决定容量,如果想面积更大只能减小长度,增加高度。是左边的柱子向右移动还是右边的柱子向左移动?当然是哪边的柱子短就改哪边的,只有这样,高度才有可能有增加的趋势。时间复杂度:O(n),空间复杂度:O(1)public int maxArea(int[] height) { if(height==null||height.length==0){ return 0; } int left=0; int right=he原创 2020-07-30 14:35:43 · 96 阅读 · 0 评论 -
6-10 Z 字形变换(未完成)/整数反转/字符串转换整数/回文数/正则表达式匹配
6. Z 字形变换原创 2020-07-31 10:45:02 · 260 阅读 · 0 评论 -
1-5两数之和/两数相加/无重复字符的最长子串/寻找两个正序数组的中位数(未完成)/最长回文子串
1.两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> map=new HashMap<>(); for(int i=0;i<nums.length;i++){原创 2020-07-30 10:38:05 · 107 阅读 · 0 评论