![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术文章
IceHillGo
深悲早现茶花女,胜愿终成苦行僧。无数奇珍供世眼,一轮明月耀天心。
展开
-
Redis内存淘汰机制
Redis内存淘汰机制内存淘汰机制就能保证在redis内存占用过高的时候,去进行内存淘汰,也就是删除一部分key,保证redis的内存占用率不会过高,那么它会淘汰哪些key呢?Redis目前共提供了8种内存淘汰策略,含Redis 4.0版本之后又新增的两种LFU模式:volatile-lfu和allkeys-lfu。 内存淘汰机制由redis.conf配置文件中的maxmemory-policy属性设置,没有配置时默认为no-eviction模式。no-eviction当内存不足以容纳新写入数原创 2021-05-26 10:40:45 · 472 阅读 · 0 评论 -
461.汉明距离
461.汉明距离解题思路:位运算package leadcode;/** * @author : icehill * @description : 汉明距离 * 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 * 给出两个整数 x 和 y,计算它们之间的汉明距离。 * 注意: * 0 ≤ x, y < 2^31. * 示例: * 输入: x = 1, y = 4 * 输出: 2 * 解释: * 1 (0 0 0 1) * 4 (0 1 0原创 2021-05-23 17:54:26 · 66 阅读 · 0 评论 -
255.最小栈
255.最小栈解题思路:package leadcode;import java.util.LinkedList;/** * @author : icehill * @description : 最小栈 * 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 * push(x) —— 将元素 x 推入栈中。 * pop() —— 删除栈顶的元素。 * top() —— 获取栈顶元素。 * getMin() —— 检索栈中的最小元素。 * 示例:原创 2021-05-23 16:40:25 · 63 阅读 · 0 评论 -
232.用栈实现队列
232.用栈实现队列解题思路:双栈package leadcode;import java.util.Deque;import java.util.LinkedList;/** * @author : icehill * @description : 用栈实现队列 * 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): * 实现 MyQueue 类: * void push(int x) 将元素 x 推到队列的末尾 *原创 2021-05-23 15:34:02 · 43 阅读 · 0 评论 -
常用排序算法
常用排序算法选择排序、插入排序、冒泡排序、快速排序、归并排序package leadcode.lib;import java.util.Arrays;/** * @author : icehill * @description : 排序算法 * @date : 2021-05-19 */public class Sort { public static void main(String[] args) { Sort sort = new Sort();//原创 2021-05-19 15:33:40 · 68 阅读 · 0 评论 -
171.Excel表列序号
171.Excel表列序号解题思路package leadcode;/** * @author : icehill * @description : Excel表列序号 * 给定一个Excel表格中的列名称,返回其相应的列序号。 * 例如, * A -> 1 * B -> 2 * C -> 3 * ... * Z -> 26 * AA -> 27 * AB -> 28 * ... * 示例 1: * 输入: "A" * 输出: 1原创 2021-05-02 13:54:01 · 54 阅读 · 0 评论 -
172.阶乘后的零
172.阶乘后的零解题思路package leadcode;/** * @author : icehill * @description : 阶乘后的零 * 给定一个整数 n,返回 n! 结果尾数中零的数量。 * 简单题: * 解题思路: * 最优解:更偏向于数学题,主要是对问题的归纳总结。 * 规律就是每隔 5 个数,出现一个 5, * 每隔 25 个数,出现 2 个 5, * 每隔 125 个数,出现 3 个 5... 以此类推。 * 最终 5 的个数就是 n / 5 + n原创 2021-05-02 00:43:32 · 52 阅读 · 0 评论 -
104.二叉树的最大深度
104.二叉树的最大深度解题思路:深度优先搜索package leadcode;import leadcode.lib.TreeNode;import leadcode.lib.TreeNodeInit;/** * @author : icehill * @description : 二叉树的最大深度 * @date : 2021-05-01 * 给定一个二叉树,找出其最大深度。 * <p> * 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 * <p原创 2021-05-01 21:28:19 · 63 阅读 · 0 评论 -
162.寻找峰值
162.寻找峰值解题思路:1线性查找,2二分查找(最优,利用线性递增递减特征)package leadcode;/** * @author : icehill * @description : 寻找峰值 * 峰值元素是指其值大于左右相邻值的元素。 * 给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 * 你可以假设 nums[-1] = nums[n] = -∞ * 示例 1: * 输入:nums = [1,2原创 2021-05-01 18:02:24 · 73 阅读 · 0 评论 -
19.删除链表的倒数第N个结点
19.删除链表的倒数第N个结点解题思路:package leadcode;import leadcode.lib.ListNode;import leadcode.lib.ListNodeInit;/** * @author : icehill * @description : 删除链表的倒数第N个结点 * 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 * <p> * 进阶:你能尝试使用一趟扫描实现吗? * 输入:head = [1,2,3,4,5原创 2021-04-29 00:17:50 · 55 阅读 · 0 评论 -
334.递增的三元子序列 解题思路
334.递增的三元子序列解题思路package leadcode;/** * @author : icehill * @description : 递增的三元子序列 * 给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。 * <p> * 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。 *原创 2021-04-25 22:46:39 · 74 阅读 · 0 评论 -
69.x的平方根
69.x的平方根解题思路:二分查找package leadcode;/** * @author : icehill * @description : x 的平方根 * 实现int sqrt(int x)函数。 * <p> * 计算并返回x的平方根,其中x 是非负整数。 * <p> * 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 * <p> * 示例 1: * 输入: 4 * 输出: 2 * 示例 2: * <p&g原创 2021-04-21 22:13:24 · 48 阅读 · 0 评论 -
94.二叉树的中序遍历
94.二叉树的中序遍历解题思路package leadcode;import leadcode.lib.TreeNode;import leadcode.lib.TreeNodeInit;import java.util.*;/** * @author : icehill * @description : 二叉树的中序遍历 * 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 * 1.递归 * 时间复杂度:O(n) 空间复杂度:O(n) * 2.迭代 * 时间复杂度原创 2021-04-19 00:05:16 · 39 阅读 · 0 评论 -
53.最大子序和
53.最大子序和解题思路package leadcode;/** * @author : icehill * @description : 最大子序和 * 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 * <p> * 示例 1: * 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] * 输出:6 * 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 * 示例 2: * 输入:num原创 2021-04-18 20:53:52 · 65 阅读 · 0 评论 -
219.存在重复元素II
219.存在重复元素II解题思路package leadcode;import java.util.HashSet;import java.util.Set;/** * @author : icehill * @description : 存在重复元素II * 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。 * 示例 1: * <p> * 输入:原创 2021-04-18 18:15:18 · 55 阅读 · 0 评论 -
101.对称二叉树
101.对称二叉树解题思路package leadcode;import leadcode.lib.TreeNode;import leadcode.lib.TreeNodeInit;/** * @author : icehill * @description : 对称二叉树 * 给定一个二叉树,检查它是否是镜像对称的。 * 例如,二叉树 [1,2,2,3,4,4,3] 是对称的 * 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: * 进阶: * &原创 2021-04-18 15:34:00 · 38 阅读 · 0 评论 -
217.存在重复元素
217.存在重复元素解题思路package leadcode;import java.util.HashSet;import java.util.Set;/** * @author : icehill * @description : 存在重复元素 * 给定一个整数数组,判断是否存在重复元素。 * <p> * 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false * 简单题, * 解题思路: * 1.哈希表 * 对原创 2021-04-18 00:23:39 · 62 阅读 · 0 评论 -
136.只出现一次的数字
136.只出现一次的数字解题思路:package leadcode;import java.util.HashMap;/** * @author : icehill * @description : 只出现一次的数字 * 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 * 说明: * 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? * 示例 1: * 输入: [2,2,1] * 输出: 1 * 示例 2:原创 2021-04-17 12:21:25 · 41 阅读 · 0 评论 -
11.盛最多水的容器
11.盛最多水的容器解题思路:package leadcode;/** * @author : icehill * @description : 盛最多水的容器 * 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。 * 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。 * 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 * <p> * 来源:力扣(LeetCode)原创 2021-04-14 00:06:04 · 47 阅读 · 0 评论 -
28.实现strStr
28.实现strStr解题思路/** * @author : icehill * @description : 实现 strStr() * 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 * 示例 1: * 输入: haystack = "hello", needle = "ll" * 输出: 2 * 示例 2: * 输入: haystack = "aaa原创 2021-04-14 00:05:33 · 42 阅读 · 0 评论 -
14.最长公共前缀
14.最长公共前缀解题思路/** * @author : icehill * @description : 最长公共前缀 * 编写一个函数来查找字符串数组中的最长公共前缀。 * <p> * 如果不存在公共前缀,返回空字符串 ""。 * 示例 1: * 输入:strs = ["flower","flow","flight"] * 输出:"fl" * 示例 2: * 输入:strs = ["dog","racecar","car"] * 输出:"" * 解释:输入不存在公原创 2021-04-11 23:51:33 · 68 阅读 · 0 评论 -
8.字符串转换整数 (atoi)
8.字符串转换整数 (atoi)解题思路package leadcode;/** * @author : icehill * @description : 字符串转换整数 (atoi) * 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 * <p> * 函数 myAtoi(string s) 的算法如下: * 读入字符串并丢弃无用的前导空格 * 检查下一个字符(假设还未到字符末原创 2021-04-11 22:49:49 · 134 阅读 · 0 评论 -
5.最长回文子串
5.最长回文子串解题思路(三种解题方法)1.暴力遍历2.中心扩散法3.动态规划2、3都是可取的算法package leadcode;/** * @author : icehill * @description : 最长回文子串 * 给你一个字符串 s,找到 s 中最长的回文子串。 * 示例 1: * 输入:s = "babad" * 输出:"bab" * 解释:"aba" 同样是符合题意的答案。 * 示例 2: * 输入:s = "cbbd" * 输出:"bb" *原创 2021-04-11 17:07:22 · 95 阅读 · 0 评论 -
326.3的幂
326.3的幂解题思路package leadcode;/** * @author : icehill * @description : 3的幂 * 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。 * 整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/problems/power-of-three * 著作权归领扣原创 2021-04-09 20:53:22 · 60 阅读 · 0 评论 -
88.合并两个有序数组
88.合并两个有序数组解题思路package leadcode;import java.util.Arrays;/** * @author : icehill * @description : 合并两个有序数组 * 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 * 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保原创 2021-04-09 01:41:17 · 67 阅读 · 0 评论 -
26.删除有序数组中的重复项
26.删除有序数组中的重复项解题思路package leadcode;/** * @author : icehill * @description : 删除有序数组中的重复项 * 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 * 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/原创 2021-04-09 01:00:35 · 44 阅读 · 0 评论 -
21.合并两个有序链表
21.合并两个有序链表解题思路package leadcode;import leadcode.lib.ListNode;import leadcode.lib.ListNodeInit;import java.util.List;/** * @author : icehill * @description : 合并两个有序链表 * 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 * @date : 2021-04-07 */p原创 2021-04-08 13:10:30 · 83 阅读 · 0 评论 -
7.整数反转
7.整数反转解题思路package leadcode;/** * @author : icehill * @description : 整数反转 * 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 * 如果反转后整数超过 32 位的有符号整数的范围[−2^31, 2^31− 1] ,就返回 0。 * 假设环境不允许存储 64 位整数(有符号或无符号)。 * <p> * 示例 1: * <p> * 输入:x = 123 * 输出原创 2021-04-06 21:19:42 · 87 阅读 · 0 评论 -
4.寻找两个正序数组的中位数
4.寻找两个正序数组的中位数解题思路:合并两个数组为一个有序的大数组,中间位置就是中位数时间复杂度:O(m+n) 空间复杂度:O(m+n)对1进行改进,不合并数组,维护两个指针a,b,每次判断nums1[a] 和nums2[b]哪个小,小的那个指针+1,,注意a、b不能超过数组长度,如果a等于nums1的长度,则只需要对b++即可,同理b也是。这样直到找到中位数即可(这是我第一时间想到的)时间复杂度:O(m+n) 空间复杂度:O(1)package leadcode;/** *原创 2021-04-06 19:57:44 · 90 阅读 · 0 评论 -
PHP比较两张图片是否一致
PHP比较两张图片是否一致思路:通过file_get_contents函数将图片读取到字符串中,然后再通过base64_encode转换,最后拼接上Data URI scheme<?php/** * 比较两张图片是否一致 * 通过将图片转成base64字符串再去比较 * @param $file 文件路径 * @return string base64字符串 */function fileToBase64($file){ $base64File = ''; if (原创 2021-04-06 11:19:05 · 549 阅读 · 0 评论 -
66.加一(数组表示的整数)
66.加一解题思路import java.util.Arrays;/** * @author : icehill * @description : 加一 * 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 * 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 * 你可以假设除了整数 0 之外,这个整数不会以零开头。 * 示例 1: * * 输入:digits = [1,2,3] * 输出:[1,2,4] * 解释:输入数组表示数字 123。原创 2021-04-05 23:56:01 · 44 阅读 · 0 评论 -
371.两整数之和
371.两整数之和解题思路/** * @author : icehill * @description : 两整数之和 * 不使用运算符 + 和 - ,计算两整数a 、b之和。 * 示例 1: * 输入: a = 1, b = 2 * 输出: 3 * 示例 2: * 输入: a = -2, b = 3 * 输出: 1 * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/problems/sum-of-two-integers * 著作权归原创 2021-04-05 22:26:27 · 43 阅读 · 0 评论 -
Java-二进制转换
Java-二进制转换十进制转成二进制//将十进制数转成字符串,例如n=5 ,s = "101"String s1 = Integer.toBinaryString(5);将字符串转成整形//只能是数字类的字符串int a = Integer.valueOf("1002");//或者int b = Integer.parseInt("1002");将整形转成字符串String s3 = String.valueOf(1025);二进制字符串转十进制int tota原创 2021-04-05 22:06:22 · 2038 阅读 · 0 评论 -
350.两个数组的交集 II
350.两个数组的交集 II解题思路import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;/** * @author : icehill * @description : 两个数组的交集 II * 给定两个数组,编写一个函数来计算它们的交集。 * 示例 1: * 输入:nums1 = [1,2,2,1], nums2 = [2,2] * 输出原创 2021-04-05 21:49:05 · 61 阅读 · 0 评论 -
414.Fizz Buzz
414.Fizz Buzz写一个程序,输出从 1 到 n 数字的字符串表示。如果 n 是3的倍数,输出“Fizz”;如果 n 是5的倍数,输出“Buzz”;如果 n 同时是3和5的倍数,输出 “FizzBuzz”。解题思路import java.util.ArrayList;import java.util.List;/** * @author : icehill * @description : Fizz Buzz * 写一个程序,输出从 1 到 n 数字的字符串表示。 *原创 2021-04-04 22:29:35 · 697 阅读 · 0 评论 -
344.反转字符串
/**@author : icehill@description : 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输原创 2021-04-04 22:09:44 · 69 阅读 · 0 评论 -
454.四数相加 II
454.四数相加 II解题思路import java.util.HashMap;/** * @author : icehill * @description : 四数相加 II * 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 * 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228原创 2021-04-04 21:58:18 · 42 阅读 · 0 评论 -
387.字符串中的第一个唯一字符
387.字符串中的第一个唯一字符给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。解题思路import java.util.HashMap;/** * @author : icehill * @description : 字符串中的第一个唯一字符 * 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 * 示例: * s = "leetcode" * 返回 0 * s = "loveleetcode" *原创 2021-04-04 12:12:55 · 75 阅读 · 0 评论 -
phpstorm配置php环境
phpstorm配置php环境第一步,点击“File”,在下拉菜单中选择“Settings…”第二步,进入“Settings”页面,找到“Languages&Frameworks”并展开。第三步,在“Languages&Frameworks”中找到“PHP”,然后点击“CLI Interpreter”后的“三个点”。第四步,点击左上角的加号”第五步,选择“Local Path to Interpreter…”。第六步,找到“General”,点击“PHP executable”原创 2021-03-30 23:45:14 · 3900 阅读 · 2 评论 -
旋转有序数组寻找最小值
旋转有序数组寻找最小值看到有序数组我们第一时间就能想到用二分查找,只不过旋转数组不能直接用二分查找,需要进行改造。思路分析旋转有序数组,如果用二分查找,那么肯定存在一边有序A,另外一边无序或有序B,我们假设数组的有序是递增的,那么最小值肯定是在有序的一边A的最左边,或者在另外一边B,那么按二分查找,每次设置mid=(left+right )/2,如果array[mid]<array[right],则说明右边有序,那么最小值肯定在array[left]-array[mid]中,接下来只需要设原创 2021-03-31 11:04:17 · 197 阅读 · 0 评论