自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux安装Docker环境,并在Docker容器中安装MySQL,Redis等环境

Linux安装Docker环境,并在Docker容器中安装MySQL,Redis等环境第一步: 进入Docker官网,点击指定的Linux环境,我这里是CentOS,首先检查删除之前旧版本的Docker 官网网址: https://docs.docker.com/engine/install/centos/ 检查删除命令: $sudo yum remove docker \ docker-client \ docker-clie

2021-03-04 11:05:00 330 1

原创 下载安装Python环境

下载安装Python环境步骤首先进入Python官网,地址如下所示python官网地址:选择Windows版本:这里我选择的是3.83版本,进行下载下载完毕以后,找到你下载的位置,进行安装安装完毕以后,打开cmd窗口,输入py,如果出现下面的版本提示信息,说明已经安装完毕...

2020-12-28 21:10:30 516

原创 阿里云(CentOS7.4)安装MySQL,以及本地远程连接MySQL

阿里云(CentOS7.4)安装MySQL,以及本地远程连接MySQL阿里云yum安装MySQL第一步:检查是否本机存在mysqlrpm -qa | grep mysqlyum info mysql-community-server第二步:拷贝mysql官网yum-community-mysql的下载地址https://dev.mysql.com/downloads/https://dev.mysql.com/downloads/file/?id=484922第三步:安装mysq

2020-11-12 16:30:29 2401 7

原创 删除排序数组的重复项问题

删除排序数组的重复项问题I , II删除排序数组的重复项问题I问题描述思路分析代码实现public static void main(String[] args) { int[] nums = {0,0,1,1,1,2,2,3,3,4}; RemoveDuplicates solution = new RemoveDuplicates(); int count = solution.removeDuplicates(nums);

2020-10-28 16:38:28 193

原创 算法题之重构乘积数组问题

算法题之重构乘积数组问题问题描述思路分析res[i]中在两次遍历过程中乘积的元素变化图为:代码实现//思路.左右相间相乘法 public int[] constructArr02(int[] a) { int n = a.length; if (a == null || n == 0) return new int[0]; //定义一个新的结果集res int[] res = new int[n]; //

2020-10-18 13:20:20 137

原创 华为面试题计算求和的最短时间问题

华为面试题计算求和的最短时间问题问题描述问题分析图解我们以nums = {5,4,1,2,2}这5个数为例代码实现 public static void main(String[] args) { //编写输入案例:n为计算数的个数;n个数用队列queue接收(此处队列用添加有序的LinkedList定义) Scanner scanner = new Scanner(System.in); System.out.println("请输入要输入

2020-10-16 12:20:17 1119 1

原创 算法题之字符串相乘问题

算法题之字符串相乘问题问题描述题解图解1图解2代码实现 public String multiply(String num1, String num2) { //首先我们去除掉特殊情况 //如果num1和num2长度为0或者num1和num2为"0",则返回0 if (num1.length() == 0 || num2.length() == 0 || num1.equals("0") || num2.equals("0")) retur

2020-10-15 12:53:36 251 1

原创 算法题之分割等和子集问题

算法题之分割等和子集问题问题描述问题分析代码实现//利用动态规划完成问题的求解(二维动态规划数组完成) public boolean canPartition(int[] nums) { //首先我们需要判断nums数组的长度是否 > 1 if (nums.length < 2) return false; //进行求nums数组所有正整数的和 int sum = 0; for (int num

2020-10-12 21:39:47 392

原创 算法题之最长有效括号的长度问题

算法题之最长有效括号的长度问题问题描述思路分析代码实现public int longestValidParentheses(String s) { if (s == null || s.length() <= 1) { return 0; } //定义一个栈 Stack<Integer> stack = new Stack<>(); int len = s.len

2020-10-12 11:00:58 504

原创 算法题之环形链表问题

算法题之环形链表问题环形链表问题1思路1:利用快慢指针来实现分析:我们定义两个指针:分别指向头节点和头节点的下一个节点;每一次慢指针平移一步(即平移到它的next节点),而快指针则平移两步(即平移到它的next的next节点),完成快指针追赶慢指针的操作;如果该链表时环形链表,则一定会在某一个时间点,快指针会和慢指针在环内相遇代码实现/* * 环形链表I:方法1:使用两个指针(快慢指针)来完成环形链表的是否有环判断问题 * 即定义一个指针first和指针second同时指向

2020-10-10 19:31:03 187

原创 算法题之合并两个有序单向链表

算法题之合并两个有序单向链表题目描述题目分析代码实现思路1代码:public ListNode mergeTwoLists(ListNode l1, ListNode l2) { //首先判断两个头结点是否都为null,如果均为null则直接返回null即可 if (l1 == null && l2 == null) { return null; } //定义一个新的链表头节点:仅仅表示一

2020-10-07 20:58:37 603

原创 算法题之有效括号问题

算法题之有效括号问题题目描述思路分析思路图解代码实现 public boolean isValid(String s) { //首先对s进行判断:(1)若s为空或者null,则表示有效字符串(2)若s的长度为奇数,则不可能满足要求,直接返回false if (s == null || s.length() == 0) return true; if (s.length() % 2 == 1) return false; //首先

2020-10-07 12:29:58 236

原创 算法题之颜色分类问题(O(n)时间复杂度)

算法题之颜色分类问题(O(n)时间复杂度)题目描述思路分析思路一图解思路2图解代码实现 //思路2:双指针操作 public void sortColors(int[] nums) { //定义两个指针:left指向数组起始索引,right指向数组末尾索引 int left = 0; int right = nums.length - 1; //for循环遍历nums数组 for (int i =

2020-10-07 12:26:55 237

原创 算法题之电话号码的字母组合问题

算法题之电话号码的字母组合问题题目描述思路分析图解代码实现public List<String> letterCombinations(String digits) { //定义res:存储最终字母组合的结果集 List<String> res = new ArrayList<>(); //如果传入的digits为null或者长度为0,则直接返回空的res if (digits == null

2020-10-06 10:48:04 225

原创 算法题之最接近的三数之和问题

算法题之最接近的三数之和问题题目描述题目分析图解以上面给的示例为例:代码实现 public int threeSumClosest(int[] nums, int target) { //定义一个存储每一次三个数组合的和 int res = 0; //若nums为null或者长度小于3,直接返回0 if (nums == null || nums.length < 3) { return res;

2020-10-06 10:45:11 203

原创 算法题之四数之和问题求解

算法题之四数之和问题求解问题描述思路分析代码实现[思路图解可以参考直接博客三数之和问题]算法题之三数之和问题 public List<List<Integer>> fourSum(int[] nums, int target) { List<List<Integer>> res = new ArrayList<>(); //首先对该数组进行排序处理 Arrays.sort(nums);

2020-10-05 15:48:50 247

原创 算法题之机器人运动范围问题

算法题之机器人运动范围问题问题描述思路分析思路1:使用递归回溯法进行求解代码实现 int moveCount; public int movingCount(int m, int n, int k) { //构造m行n列的二维数组: int[][] board = new int[m][n]; findMovingPath(0,0,m,n,board,k); return moveCount; } priv

2020-10-05 10:52:07 392

原创 算法题之三数之和问题

算法题之三数之和问题题目描述题目分析方式2:图解最后得到结果集:java代码方式1:dfs遍历public List<List<Integer>> threeSum(int[] nums) { //首先对nums数组进行排序处理 Arrays.sort(nums); //保存所有的结果集:res List<List<Integer>> res = new ArrayLi

2020-10-04 18:12:51 1399

原创 算法题之罗马数字转成整数

算法题之罗马数字转成整数问题描述将罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 X

2020-10-03 15:37:27 234

原创 算法题之将整数转换成罗马数字

算法题之将整数转换成罗马数字题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即

2020-10-03 11:28:08 503

原创 算法题之填充每个节点的下一个右侧节点指针 II

算法题之填充每个节点的下一个右侧节点指针 II题目描述题解java代码public class FillUpRightNode { /* *给定一个二叉树:填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 * 输入:root = [1,2,3,4,5,null,7] * 输出:[1,#,2,3,#,4,5,7,#] * */ public static void mai

2020-09-30 16:42:31 116

原创 算法题之求基数x的n次方

算法题之求基数x的n次方题目描述题目分析我们先来看两个例子:代码实现//利用递归和二分法进行计算 public double myPow(double x,int n) { if (n == 0) { return 1; } //如果n为负数:则将其改为负数,并将1/x提取出一个 if (n < 0) { //由于n若为Integer.MIN_VALUE,即-2^3

2020-09-28 19:55:24 675

原创 算法题之求所有从根节点到叶子节点路径总和等于给定目标和的路径问题

算法题之求所有从根节点到叶子节点路径总和等于给定目标和的路径问题题目描述思路图解代码实现方式1 public List<List<Integer>> pathSum(TreeNode root, int sum) { //定义存储最后结果的list集合 List<List<Integer>> res = new ArrayList<>(); //定义sub存储每一次满足要求的结果集

2020-09-28 19:04:38 889

原创 算法题之中序后序构建二叉树(以及前序中序构建二叉树)

算法题之中序后序构建二叉树(以及前序中序构建二叉树)题目描述中序与后序遍历构建二叉树思路分析代码实现public class FindBinaryTreeByInfixAndPost { //定义两个中序数组和后序数组属性 int[] inorder; int[] postorder; //定义属性post_idx记录每一 次的根结点位置 int post_idx; //定义一个hashmap:存储中序遍历结果 HashMap<Int

2020-09-25 16:36:12 238 1

原创 算法题之字符串的Z字变换

算法题之字符串的Z字变换题目描述题解代码实现import java.util.ArrayList;import java.util.List;public class ZWordExchange { /* * 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 * 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时, * 排列如下: * L C I R * E T O E S I

2020-09-25 09:59:41 173

原创 算法题之求字符串的最长回文子串(中间扩散法,动态规划)

算法题之求字符串的最长回文子串(中间扩散法,动态规划)题目描述回文串:是一个正读和反读都一样的字符串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”题解1:中间扩散法代码实现public String longestPalindromeByMidEx(String s) { //如果s长度为0

2020-09-23 14:54:55 358

原创 算法题之监控二叉树问题

算法题之监控二叉树问题问题描述给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。示例 2:输入:[0,0,null,0,null,0,null,null,0]输出:2解释:需要至少两个摄像头来监视树的所有节点。 上图显示了摄像头放置的有效位置之一。题解代码实现package com.

2020-09-22 16:38:33 155

原创 算法题之求最大不重复子串的个数(滑动窗口)

算法题之求最大不重复子串的个数(滑动窗口)题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkpw”输出: 3解释: 因为无重复字符的最长子串是 “kpw”,所以其长度为 3。题解(滑动窗口)以输入: "pwwkp

2020-09-22 10:04:48 1877 3

原创 算法题之求子集问题

算法题之求子集问题题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。输入: nums = [1,2,3] 输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]题解代码实现package com.bingym.algorithm.recursionproblems.subset;import java.util.ArrayList;import java.util.Arrays;impo

2020-09-21 10:03:51 585

原创 递归回溯问题总结(迷宫问题,匹配路线问题,王子找公主问题)

递归回溯问题总结(迷宫问题,匹配路线问题,王子找公主问题)递归回溯问题回溯法概述:用回溯法解决的问题的所有选项可以形象的用树状图结构进行描述,在某一步有n个可能的选项.那么该步骤可以看成是树状结构中的一个节点,每个选项看成树中节点连接连接线,经过这些连接线到达该节点的n个子节点,树的叶节点对应着终结状态.如果在叶节点的状态满足题目中的约束条件,那么我们即找到了一个可行的解决方案;如果叶节点的状态不满足约束条件,只能回溯到上一个节点再继续尝试其他的选项,如果上一个节点的所有可能的选项都已经试过,并且不

2020-09-20 19:17:13 378

原创 算法题之输出字符串的数字

算法题之输出字符串的数字题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中

2020-09-19 16:26:31 2168

原创 算法题值秋叶集问题(动态规划实现)

算法题值秋叶集问题(动态规划实现)题目描述小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕。示例 1:输入

2020-09-17 18:55:47 247

原创 算法题之两数之和(链表实现)

算法题之两数之和(链表实现)题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路分析由于思路1不能完成最

2020-09-17 10:55:29 435

原创 算法题之二叉排序树的翻转(递归实现)

算法题之二叉排序树的翻转(递归实现)题目描述题目分析题解思路:从头结点遍历整颗二叉树:若当前节点为null:表示已经到达叶子节点的下一个节点,直接返回若当前节点的左子树不为空:则递归进行左子树的翻转操作若当前节点的右子树不为空:则递归进行右子树的翻转操作最后,对当前节点进行翻转操作:首先定义一个辅助节点变量temp = this.left;然后将当前节点的左子树等于当前节点的右子树:this.left = this.right;最后将当前节点的右子树等于当前节点的左子树:this.r

2020-09-16 17:21:08 325

原创 算法题之判断数独是否有效问题

算法题之判断数独是否有效问题题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".

2020-09-15 16:57:08 1022

原创 算法问题之酒店预订问题(动态规划)

酒店预订问题(动态规划)题目描述你要出去旅游,有N元的预算住酒店,有M家酒店供你挑选,这些酒店都有价格X。需要你正好花完这N元住酒店(不能多,也不能少)最少能住几晚?返回最少住的天数,没有匹配的返回-1比如你有1000元,所有酒店都是大于1000的,则返回-1比如你有1000元,有1家1000元的,有1家300,有1家700。则最少能住1晚,最多住2晚(300+700)。返回1比如你有1000元,有1家387元,有1家2元,有一家611,则返回3(3家各住1天)比如你有1000元,有1家1元的

2020-09-15 08:33:03 1760

原创 m位非负整数N去掉X位数的剩下位数最小值(java代码)

m位非负整数N去掉X位数的剩下位数最小值题设给定一个用字符串表示的m位非负整数N,去掉其中的x位数以后,使得剩下的数字Y最小:注意:m>=xN不会包含前导零,即首位一定是非0数字输入:第一行:字符窗数字a第二行:x示例:输入:14323193输出:1219题目分析:该题依旧属于递归回溯问题问题分析第一次我们选择的第一个数将其加入集合中,然后递归选择第2个,第3个…直到集合的size等于我们去掉X个数以后剩余K位数的K,此时我们需要对其进行判断:(1)如果此时我们集合中

2020-09-14 18:52:25 1101

原创 HashMap高阶笔记讲解

HashMap高阶笔记讲解1.HashMap集合简介​ HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。​ JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突**(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)*

2020-09-14 17:12:18 505

原创 组合求和问题(java实现)

组合求和问题(java实现)题设题目分析举例图解java代码实现package com.bingym.algorithm.mergenum;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MergeNumDemo { static int num[] = {0,1,2,3,4,5,6,7,8,9}; public static void ma

2020-09-12 13:07:39 487

原创 java实现ArrayList和LinkedList[包含接口List和抽象类AbstractList]

java实现ArrayList和LinkedList[包含接口List和抽象类AbstractList]图解首先我们需要定义一个MyList的接口,将ArrayList和LinkedList共同的方法进行定义package com.bingym.list.mylist;public interface MyList<E> { //自定义List接口:内部包含了List的抽象方法 int size();//获取集合的大小 boolean isEmpty();/

2020-09-11 15:29:14 395

动态规划算法笔记总结ZIP分享

进行动态规划问题的详细总结,总结了相关的经典问题,例如0-1背包问题,完全背包问题,然后对LeetCode若干使用动态规划实现的题型进行梳理和思路分析讲解

2020-12-01

空空如也

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

TA关注的人

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