自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ALi的博客

未来的所有规划都是基于毕业后进阿里

  • 博客(219)
  • 收藏
  • 关注

原创 腾讯云智面试题

3.28腾讯云智面试答案

2023-04-03 17:23:41 1087 1

原创 Java集合面试题

Java集合面试题

2023-03-31 21:11:41 707

原创 操作系统八股文

后端操作系统面试题整理

2023-03-30 21:29:18 2008

原创 Windows的.bat文件按照一定的时间间隔来执行docker指令

windows一直运行docker命令

2023-03-30 21:16:14 894

原创 计算机网络八股文

自己整理的计网八股文

2023-03-29 15:57:41 2952 1

原创 Redis八股文

自己整理的Redis高频面试题

2023-03-29 15:54:03 542

原创 Java基础八股文

java基础八股文

2023-03-27 16:09:46 3057

原创 LeetCode581+621+207

LeetCode581+621+207

2022-08-01 15:59:09 106

原创 LeetCode240+312+394

LeetCode240+312+394

2022-07-28 15:26:10 114

原创 leetcode221. 最大正方形

leetcode221+234+238

2022-07-09 17:01:57 453 1

原创 LeetCode136+128+152+148

136+128+152+148

2022-07-01 20:13:30 223

原创 LeetCode85+105+114+124

leetCode85+105+114+124

2022-06-29 15:55:58 105

原创 LeetCode76+79+84

LeetCode76+79+84

2022-06-15 20:46:07 165 1

原创 LeetCode55+56

LeetCode55+56

2022-06-13 20:22:31 447

原创 LeetCode75. 颜色分类+LeetCode49. 字母异位词分组

LeetCode75. 颜色分类+LeetCode49. 字母异位词分组。

2022-06-07 19:48:07 104

原创 LeetCode42. 接雨水 && LeetCode48. 旋转图像

LeetCode42. 接雨水 && LeetCode48. 旋转图像

2022-06-06 20:18:55 98

原创 LeetCode34. 在排序数组中查找元素的第一个和最后一个位置

LeetCode34。用两种方法求解

2022-06-05 21:08:56 97

原创 LeetCode33. 搜索旋转排序数组

LeetCode33题用二分法解决

2022-06-05 20:22:00 73

原创 LeetCode32. 最长有效括号

LeetCode32

2022-06-04 20:53:42 132

原创 LeetCode

leetCode31

2022-06-04 20:01:05 92

原创 LeetCode23. 合并K个升序链表

优先队列

2022-06-01 20:28:26 101

原创 LeetCode22. 括号生成

LeetCode22. 括号生成回溯算法解决

2022-06-01 19:42:01 192

原创 LeetCode21. 合并两个有序链表

LeetCode热题100

2022-05-31 20:23:44 74

原创 LeetCode11. 盛最多水的容器

思路用左右两个指针遍历数组,每次移动一个指针,另一个指针不动,每移动一次就计算一次容量。容量=(r-l)*min。左右指针最小值为min。此时基本思路已经知道了,就剩下指针如何移动了。无论是移动短板或者长板,我们都只关注移动后的新短板会不会变长,而每次移动的木板都只有三种情况,比原短板短,比原短板长,与原短板相等;如向内移动长板,对于新的木板:1.比原短板短,则新短板更短。2.与原短板相等或者比原短板长,则新短板不变,容量变小。所以,向内移动长板,一定不能使新短板变长。代码class S.

2022-05-31 19:52:46 76

原创 LeetCode10. 正则表达式匹配

思路c*:可以是c...c或者空或者是c。首先将dp数组初始化。dp[0][0] = true;那么其真正的起始位置是dp[1][1]。那么初始化时dp数组的长度就是s和p的长度+1;对于aab和c*a*b这一种情况,只能把c*先删除,所以初始化的时候才有一个for循环来初始化。然后就是s和p的下标对比了有三大种情况:①:s.charAt(i)==p.charAt(j)则dp[i+1][j+1]=dp[i][j];这里i+1和j+1就是因为dp[0][0]不是从00开始的。②...

2022-05-28 20:39:37 179

原创 LeetCode5. 最长回文子串

思路1.动态规划:用动态规划实现的。这个题和最长回文子串的长度的题很相似,就多了一个截取字符串的过程2.中心扩散就是遍历各个字符,以该字符为中心向其左右两边扩散。一次比较扩散后的两个元素是否相等。但是会有一种情况就是以两个元素为中心扩散的方式。所以要考虑两种情况。代码1.动态规划class Solution { public String longestPalindrome(String s) { if(s == null || s.length() ==

2022-05-27 20:17:00 62

原创 LeetCode3. 无重复字符的最长子串

思路思路就是从左到右每次加入一个元素,存到list中,如果当前要加入的元素在list中,就从左到右一次删除一个元素,直到list中无当前元素为止;如果加入的元素不在list中,就直接加入即可。代码class Solution { public int lengthOfLongestSubstring(String s) { if(s.length() == 1 || s.length()==0){ return s.length();

2022-05-24 20:07:28 64

原创 LeetCode2. 两数相加

思路首先,要注意有进位的问题,进位的数字下一次计算也会计算,所以就用text来保存进位。在最后结束的时候,如果进位text不为空,还要在链表尾追加一个节点,其值为text。其次,两个链表的长度不一样,一个链表遍历完了,另一个没遍历完要补0.我这里没有补0节点,而是在计算值的时候用0代替。代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode

2022-05-23 20:39:44 97

原创 LeetCode347. 前 K 个高频元素

思路就是先对元素进行统计,用map来存储;然后用小顶堆来排序,得到最后的k个最大的元素。代码class Solution { public int[] topKFrequent(int[] nums, int k) { int length = nums.length; int[] res = new int[k]; Map<Integer,Integer> map = new HashMap<>();

2022-05-22 17:17:44 146

原创 LeetCode239. 滑动窗口最大值

思路暴力解法会时间超时。所以就只能用单调队列来解决了。首先用数组来实现单调队列,定义一个数组,用来实现单调队列里面存放下标,head指向队列的头节点(且当前头结点在滑动窗口内),tail指向队列的尾结点。1.队列加入元素当队列要加入一个元素时,因为本题是单调递增的,所以在加入一个元素时,如果当前元素比队列尾部元素小,就直接加入;如果比尾部元素大,就把队列里所有比当前元素小的元素删除,然后将当前元素加入队列即可。2.判断窗口向前滑动当队列头指针指向的元素已经不在当前窗口内里就是窗口向后

2022-05-22 16:16:09 125

原创 LeetCode150. 逆波兰表达式求值

思路就是遇到符号就将栈里面的元素弹出两个,进行计算;要注意下弹出栈的顺序。不是符号就入栈。代码class Solution { public int evalRPN(String[] tokens) { Stack<String> stack = new Stack<>(); for(int i =0;i<tokens.length;i++){ if(tokens[i].equals("+")

2022-05-17 20:41:58 83

原创 LeetCode1047. 删除字符串中的所有相邻重复项

思路遍历字符串,每遍历一个就将字符和栈顶的元素比较,一样就将栈顶元素弹出,不一样就加入。最后返回即可。代码class Solution { public String removeDuplicates(String s) { Stack<Character> stack = new Stack<>(); for(int i =0;i<s.length();i++){ char ch = s.charA

2022-05-17 20:15:52 179

原创 LeetCode20. 有效的括号

思路首先要遍历字符串,没遍历一个字符就对其进行比较,如果是(、{、【其中的一个就将)、}、】压入栈中,如果都不是上面的三种情况,就将栈中的栈顶元素和当前的字符进行比较,如果一样就将栈顶元素弹出,不一样就返回false,代码class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for(int i =0

2022-05-17 20:08:31 138

原创 LeetCode51. N 皇后

思路首先要知道在棋盘的什么位子可以放置棋子。当前位子所在的列所在的行以及其所在的两个对角线如果有棋子存在就不能放了。所以isVaild()函数已经就是这样写的。然后就是回溯的一般步骤。需要注意的时,在放置棋子时,要进行判断,如果满足条件就放置,如果不满足就不放,并且回溯是在满足条件的基础上进行的(可以参照图片来理解)。代码随想录的图如下:代码class Solution { List<List<String>> res = new ArrayLis.

2022-05-16 21:41:14 87

原创 LeetCode47. 全排列 II

思路这个题和上一题的全排列不同的地方是有重复的数字。需要去重,这里去重有两种方法:一个是用set去重,一个将数组排序然后用used数组去重。重点说下用used数组去重:因为是排列问题,所以就要用used数组记录遍历的元素,而去重刚好也要记录遍历的元素,所以就二者合二为一了。首先对数组进行排序,当一个元素没有被使用的时候usede是false,被使用过后就是true,所以当nums[i-1] == nums[i] && used[i-1]==false时,表明该元素在.

2022-05-14 11:00:24 92

原创 LeetCode46. 全排列

思路每一个回溯算法都可以用树形结构来展示。如下是代码随想录的图从上面的图中不难看出,每次使用一个元素后就将其在used数组中进行标记,这个不是每一层一个used数组所以不需要在for循环上面重新new数组,这个是和递增子序列不同的地方。代码class Solution { List<Integer> path = new ArrayList<>(); List<List<Integer>> res = new Array.

2022-05-14 10:49:06 189

原创 LeetCode491. 递增子序列

思路首先该题是求递增子序列,那么就不能对数组进行排序。可以看下代码随想录的题解可以从上图看到每一层的元素不可以重复,而且原数组不能排序。所以就只能没一层插入一个元素就记录一个元素,到下一层循环的时候该层的记录就清空。这就是为什么要把userd数组在for循环上重新new一个的原因。代码class Solution { List<Integer> path = new ArrayList<>(); List<List<Integer&.

2022-05-14 10:07:56 252

原创 LeetCode90. 子集 II

思路方法一:本题和上一题的子集问题最大的不同就是有重复的数字,就需要去重。和之前的去重的一样的就是要先排序然后把结果用set保存。方法二: 用Boolean数组来解决,如果同一个树枝使用过是true,如果是同一个树层使用是false。代码用set处理class Solution { List<Integer> path = new ArrayList<>(); Set<List<Integer&g...

2022-05-13 20:22:36 214

原创 LeetCode78. 子集

思路这个是子集问题,需要把所有节点都加入到res中,而组合和切割是只加入叶子节点。子集的返回就是当遍历到叶子节点时就返回。代码class Solution { List<Integer> path = new ArrayList<>(); List<List<Integer>> res = new ArrayList<>(); public List<List<Integer>> s

2022-05-12 20:47:32 154

原创 LeetCode93. 复原 IP 地址

思路这个和切割回文串很类似,就是在切割后要判断下是否是ip地址。这个的判断字符串是否是在0~255用的是ASCII码判断的,值得借鉴。代码class Solution { List<String> res = new ArrayList<>(); public List<String> restoreIpAddresses(String s) { backtracking(s,0,0); return re

2022-05-12 20:14:23 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除