![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机
IceHillGo
深悲早现茶花女,胜愿终成苦行僧。无数奇珍供世眼,一轮明月耀天心。
展开
-
Linux命令-ss
ss命令原创 2021-12-26 18:33:32 · 620 阅读 · 0 评论 -
文件查看命令more、less、cat
文件查看命令more、less、cat原创 2021-12-26 18:12:04 · 538 阅读 · 0 评论 -
647.回文子串
647.回文子串解题思路:中心扩散法Manacher 算法package leadcode;/** * @author : icehill * @description : 回文子串 * 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 * 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 * 示例 1: * 输入:"abc" * 输出:3 * 解释:三个回文子串: "a", "b", "c" * 示例 2: * 输入:"aaa原创 2021-05-28 18:15:37 · 142 阅读 · 0 评论 -
56.合并区间
56.合并区间解题思路:排序+合并区间package leadcode;import java.util.Arrays;import java.util.Comparator;/** * @author : icehill * @description : 合并区间 * 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。原创 2021-05-28 17:26:07 · 88 阅读 · 0 评论 -
260.只出现一次的数字 III
260.只出现一次的数字 III解题思路:利用异或规则:相同数字异或结果为0,一个数字与0异或结果不变package leadcode;import java.util.Arrays;/** * @author : icehill * @description : 只出现一次的数字III * 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 * 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。 * 进阶:你的算法应该具有线性时间复杂度。原创 2021-05-27 00:41:28 · 86 阅读 · 0 评论 -
693.交替位二进制数
693.交替位二进制数解题思路:package leadcode;/** * @author : icehill * @description : 交替位二进制数 * 给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 * 示例 1: * 输入:n = 5 * 输出:true * 解释:5 的二进制表示是:101 * 示例 2: * 输入:n = 7 * 输出:false * 解释:7 的二进制表示是:111. *原创 2021-05-24 00:36:50 · 185 阅读 · 0 评论 -
338.比特位计数
338.比特位计数解题思路:动态规划,找出动态规划方程组:dp[i]=dp[i-1]+1或者dp[i>>1]package leadcode;import java.util.Arrays;/** * @author : icehill * @description : 比特位计数 * 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 * 示例 1: * 输入: 2 * 输出: [0,1,原创 2021-05-24 00:06:48 · 72 阅读 · 0 评论 -
342.4的幂
342.4的幂解题思路:利用位运算以及规律:判断2的幂:x>0&&(x&(x-1))==0,x & (x - 1)其实就是把数字最后一位1变为0,也就是检查数字x是否只有一个1package leadcode;/** * @author : icehill * @description : 4的幂 * 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 * 整数 n 是 4 的幂次方需满足:存在整数原创 2021-05-23 21:12:38 · 69 阅读 · 0 评论 -
739.每日温度
739.每日温度解题思路:package leadcode;import java.util.Arrays;import java.util.Deque;import java.util.LinkedList;/** * @author : icehill * @description : 每日温度 * 请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。 * 如果气温在这之后都不会升高,请在该位置用 0 来代替。 * 例如,给定一原创 2021-05-23 17:39:22 · 64 阅读 · 0 评论 -
769.最多能完成排序的块
769.最多能完成排序的块解题思路:package leadcode;/** * @author : icehill * @description : 最多能完成排序的块 * 数组arr是[0, 1, ..., arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 * 我们最多能将数组分成多少块? * 示例 1: * 输入: arr = [4,3,2,1,0] * 输出: 1 *原创 2021-05-21 12:26:09 · 68 阅读 · 0 评论 -
240.搜索二维矩阵II
240.搜索二维矩阵II解题思路:package leadcode;/** * @author : icehill * @description : 搜索二维矩阵II * 编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: * 每行的元素从左到右升序排列。 * 每列的元素从上到下升序排列。 * 示例 1: * 输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,1原创 2021-05-21 12:04:37 · 69 阅读 · 0 评论 -
74.搜索二维矩阵
74.搜索二维矩阵解题思路:package leadcode;/** * @author : icehill * @description : 搜索二维矩阵 * 编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性: * 每行中的整数从左到右按升序排列。 * 每行的第一个整数大于前一行的最后一个整数。 * 示例 1: * 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 * 输出原创 2021-05-21 11:47:47 · 110 阅读 · 0 评论 -
48.旋转图像
48.旋转图像解题思路package leadcode;/** * @author : icehill * @description : 旋转图像 * 给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。 * 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 * 示例 1: * 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] * 输出:[[7,4,1],[8,5,2],[9原创 2021-05-21 00:19:50 · 67 阅读 · 0 评论 -
448.找到所有数组中消失的数字
448.找到所有数组中消失的数字解题思路:package leadcode;import java.util.ArrayList;import java.util.List;/** * @author : icehill * @description : 找到所有数组中消失的数字 * 给定一个范围在 1 ≤ a[i] ≤ n (n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 * 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 * 您能在原创 2021-05-20 17:03:36 · 88 阅读 · 0 评论 -
347.前K个高频元素
347.前K个高频元素解题思路:package leadcode;import java.util.*;/** * @author : icehill * @description : 前K个高频元素 * 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 * 示例 1: * 输入: nums = [1,1,1,2,2,3], k = 2 * 输出: [1,2] * 示例 2: * 输入: nums = [1], k原创 2021-05-19 17:57:25 · 85 阅读 · 0 评论 -
33.搜索旋转排序数组
33.搜索旋转排序数组解题思路:package leadcode;/** * @author : icehill * @description : 搜索旋转排序数组 * 整数数组 nums 按升序排列,数组中的值 互不相同 。 * 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums原创 2021-05-19 11:51:40 · 53 阅读 · 0 评论 -
81.搜索旋转排序数组II
81.搜索旋转排序数组II解题思路:package leadcode;/** * @author : icehill * @description : 搜索旋转排序数组II * 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 * 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[原创 2021-05-19 11:51:02 · 67 阅读 · 0 评论 -
35.搜索插入位置
35.搜索插入位置解题思路:package leadcode;/** * @author : icehill * @description : 搜索插入位置 * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 * 你可以假设数组中无重复元素。 * 示例 1: * 输入: [1,3,5,6], 5 * 输出: 2 * 示例2: * 输入: [1,3,5,6], 2 * 输出: 1 * 示例 3: * 输入原创 2021-05-18 16:08:14 · 53 阅读 · 0 评论 -
76.最小覆盖子窜
76.最小覆盖子窜解题思路:双指针滑动窗口package leadcode;import java.util.HashMap;import java.util.Map;/** * @author : icehill * @description : 最小覆盖子窜 * 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果s中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 * 注意:如果s中存在这样的子串,我们保证它是唯一的答案。 * 示例 1原创 2021-05-18 15:44:18 · 94 阅读 · 0 评论 -
31.下一个排列
31.下一个排列解题思路:package leadcode;import java.util.Arrays;/** * @author : icehill * @description : 下一个排列 * 实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 * 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 * 必须 原地 修改,只允许使用额外常数空间。 * 示例 1: * 输入:nums = [1,2,3] * 输原创 2021-05-17 00:14:11 · 130 阅读 · 0 评论 -
142.环形链表II
142.环形链表II解题思路:package leadcode;import leadcode.lib.ListNode;import leadcode.lib.ListNodeInit;import java.util.HashSet;import java.util.Set;/** * @author : icehill * @description : 环形链表II * 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 * 为了表示给定链表中的原创 2021-05-14 22:25:43 · 79 阅读 · 0 评论 -
83.删除排序连表中的重复元素
83.删除排序连表中的重复元素解题思路:package leadcode;import leadcode.lib.ListNode;import leadcode.lib.ListNodeInit;/** * @author : icehill * @description : 删除排序连表中的重复元素 * 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 * 返回同样按升序排列的结果链表。 * 示例 1: * 输入:hea原创 2021-05-14 20:08:01 · 81 阅读 · 0 评论 -
167.两数之和II-输入有序数组
167.两数之和II-输入有序数组解题思路:package leadcode;import java.util.Arrays;import java.util.HashMap;import java.util.Map;/** * @author : icehill * @description : 两数之和II-输入有序数组 * 给定一个已按照 升序排列的整数数组numbers ,请你从数组中找出两个数满足相加之和等于目标数target 。 * 函数应该以长度为 2 的整数数组的形式原创 2021-05-14 14:25:41 · 75 阅读 · 0 评论 -
130.被围绕的区域
130.被围绕的区域解题思路package leadcode;/** * @author : icehill * @description : 被围绕的区域 * 给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域, * 并将这些区域里所有的 'O' 用 'X' 填充。 * 解题思路: * 深度优先搜索 * 时间复杂度:O(m*n) 空间复杂度:O(m*n)(深度优先搜索的栈的开销) * @date : 2021-05-09原创 2021-05-09 23:33:05 · 61 阅读 · 0 评论 -
215.数组中的第k个最大元素
215.数组中的第k个最大元素解题思路:1.基于快排的的选择(快排时间复杂度是O(n*logn))但我们实际上只需要找到倒数第k个元素,快排是基于partition的分治法,我们只需要找到某次划分得到的index正好是我们需要的k即可2.基于堆排序的选择方法package leadcode;/** * @author : icehill * @description : 数组中的第K个最大元素 * 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个原创 2021-05-09 22:13:41 · 85 阅读 · 0 评论 -
139.单词拆分
139.单词拆分解题思路:动态规划package leadcode;import java.util.*;/** * @author : icehill * @description : 单词拆分 * 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 * 说明: * 拆分时可以重复使用字典中的单词。 * 你可以假设字典中没有重复的单词。 * 示例 1: * 输入: s = "leetcode", wo原创 2021-05-07 01:30:35 · 74 阅读 · 0 评论 -
227.基本计算器II
227.基本计算器II解题思路:使用辅助栈package leadcode;import java.util.Deque;import java.util.LinkedList;/** * @author : icehill * @description : 基本计算器II * 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 * 整数除法仅保留整数部分。 * 示例 1: * 输入:s = "3+2*2" * 输出:7 * 示例 2: * 输入:s =原创 2021-05-05 11:47:55 · 164 阅读 · 0 评论 -
287.寻找重复数
287.寻找重复数解题思路:1.快慢指针(floyd判圈算法,龟兔赛跑)2.哈希表3.二分查找package leadcode;import java.util.HashSet;import java.util.Set;/** * @author : icehill * @description : 寻找重复数 * 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。 * 假设 nums 只有 一个原创 2021-05-05 00:41:42 · 91 阅读 · 0 评论 -
75.颜色分类
75.颜色分类解题思路:package leadcode;import java.util.Arrays;/** * @author : icehill * @description : 颜色分类 * 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序, * 使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 * 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 * 示例 1: * 输入:nums = [2,0,2,1,1,0] *原创 2021-05-04 21:36:16 · 90 阅读 · 0 评论 -
98.验证二叉搜索树
98.验证二叉搜索树解题思路package leadcode;import leadcode.lib.TreeNode;import leadcode.lib.TreeNodeInit;/** * @author : icehill * @description : 验证二叉搜索树 * 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 * 假设一个二叉搜索树具有如下特征: * 节点的左子树只包含小于当前节点的数。 * 节点的右子树只包含大于当前节点的数。 * 所有左子树和右子树原创 2021-05-04 20:36:03 · 71 阅读 · 0 评论 -
234.回文链表
234.回文链表解题思路:package leadcode;import leadcode.lib.ListNode;import leadcode.lib.ListNodeInit;import java.util.ArrayList;import java.util.List;/** * @author : icehill * @description : 回文链表 * 请判断一个链表是否为回文链表。 * 示例 1: * 输入: 1->2 * 输出: false原创 2021-05-04 17:22:25 · 77 阅读 · 0 评论 -
79.单词搜索
79.单词搜索解题思路:package leadcode;/** * @author : icehill * @description : 单词搜索 * <p> * 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 * 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。 * 同一个单元格内的字母不允许被重复使用。 *原创 2021-05-04 15:18:02 · 136 阅读 · 0 评论 -
15.三数之和
15.三数之和解题思路:package leadcode;import java.util.*;/** * @author : icehill * @description : 三数之和 * 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c , * 使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 * 注意:答案中不可以包含重复的三元组。 * 示例 1: * 输入:nums = [-1,0,1,2,-1,-4]原创 2021-05-04 13:38:43 · 67 阅读 · 0 评论 -
70.爬楼梯
70.爬楼梯解题思路:1.动态规划2.递归(跟动态规划使用同样的公式,只不过动态规划避免了重复处理)3.更快的数学解法(矩阵快速幂、通项公式)package leadcode;/** * @author : icehill * @description : 爬楼梯 * 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 * 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? * 注意:给定 n 是一个正整数。 * <p> * 示例 1: * 输入原创 2021-05-04 00:27:08 · 54 阅读 · 0 评论 -
55.跳跃游戏
55.跳跃游戏解题思路:贪心法1.正向2.逆向package leadcode;/** * @author : icehill * @description : 跳跃游戏 * 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 * 数组中的每个元素代表你在该位置可以跳跃的最大长度。 * 判断你是否能够到达最后一个下标。 * 示例 1: * 输入:nums = [2,3,1,1,4] * 输出:true * 解释:可以先跳 1 步,从下标 0 到达下标 1,原创 2021-05-03 23:56:46 · 58 阅读 · 0 评论 -
242.有效的字母异位词
242.有效的字母异位词解题思路:1.哈希表2.排序package leadcode;import java.util.Arrays;import java.util.HashMap;import java.util.Map;/** * @author : icehill * @description : 有效的字母异位词 * 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 * 示例 1: * 输入: s = "anagram", t =原创 2021-05-03 15:08:21 · 58 阅读 · 0 评论 -
268.丢失的数字
268.丢失的数字解题思路:1.数学计算再减去2.位运算(异或)(最优)package leadcode;/** * @author : icehill * @description : 丢失的数字 * 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 * 示例 1: * 输入:nums = [3,0,1] * 输出:2 * 解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢原创 2021-05-03 14:43:01 · 157 阅读 · 0 评论 -
328.奇偶链表
328.奇偶链表解题思路:package leadcode;import leadcode.lib.ListNode;import leadcode.lib.ListNodeInit;/** * @author : icehill * @description : 奇偶链表 * 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 * 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂原创 2021-05-03 13:31:09 · 132 阅读 · 0 评论 -
198.打家劫舍
198.打家劫舍解题思路:动态规划+滚动数组package leadcode;/** * @author : icehill * @description : 打家劫舍 * 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 * 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 * 示例 1:原创 2021-05-03 12:06:12 · 43 阅读 · 0 评论 -
273.删除链表中的节点
273.删除链表中的节点解题思路:简单题,删除链表节点两种方式,1.利用前置节点。2.利用后置节点,本题用第二种package leadcode;import leadcode.lib.ListNode;import leadcode.lib.ListNodeInit;/** * @author : icehill * @description : 删除链表中的节点 * 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。 * 示例原创 2021-05-03 00:01:39 · 77 阅读 · 0 评论