# Java-Learning **Repository Path**: taowd/Java-Learning ## Basic Information - **Project Name**: Java-Learning - **Description**: java基础相关学习代码,按照不同的学习路径通过分支进行归档 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-02-07 - **Last Updated**: 2022-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java-Learning > Java学习项目,学习Java相关知识点,记录一些重要算法问题的代码实现。 > 注意:com.nowcoder包下是所有算法实现的代码,以下记录的算法代码实现均在此包下,其他作为日常学习使用 # 2020年8月16日 - 最大坡宽度 --单调队列 # 2020年8月10日 - 滑动窗口最大值 -- 单调队列 # 2020年7月11日 - 凯撒密码解密问题 - 无重复字符的最长子串 -滑动窗口2解法 - 找到字符串中所有字母异位词 - 滑动窗口 # 2020年7月5日: - 最小覆盖子串【滑动窗口解法】:https://leetcode-cn.com/problems/minimum-window-substring/ # 2020年6月13日 - 德州扑克:https://blog.csdn.net/nameofcsdn/article/details/70339592 - 服务器广播:https://blog.csdn.net/qq_36209248/article/details/104852005 - 九宫格输入问题:https://blog.csdn.net/qq_36209248/article/details/104852005 - 判断一组数连续:https://blog.csdn.net/qq_36209248/article/details/104852005 - 航班预定统计:https://blog.csdn.net/qq_36209248/article/details/104852005 - 分子弹/分发糖果:https://blog.csdn.net/qq_36209248/article/details/104852005 - 双列表元素分配:https://blog.csdn.net/qq_36209248/article/details/104852005 - 打印任务排序:https://blog.csdn.net/qq_36209248/article/details/104852005 - 单词压缩编码:https://blog.csdn.net/qq_36209248/article/details/104852005 - 报数游戏(约瑟夫环问题):https://blog.csdn.net/qq_36209248/article/details/104852005 - 抢票系统:https://blog.csdn.net/qq_36209248/article/details/104852005 - 将-相连的字符串按照给定数字,按照规则生成一个新的字符串,并输出 # 2020年6月7日 - 招聘问题:已完成:https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200606_04.java - 数字排列问题(C语言版):https://blog.csdn.net/nameofcsdn/article/details/70307098 - 数字排列问题(Java语言版):https://blog.csdn.net/Jocelyn92/article/details/69808047?utm_source=blogxgwz3 - 数字排列问题(Python语言版):https://gitee.com/taowd/learn-python3/blob/master/huawei/20200607_01.py - 计算栈中的剩余数字(Python版):https://gitee.com/taowd/learn-python3/blob/master/huawei/20200607_02.py - 英文反转问题(Java版):https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200603_04.java # 2020年6月5日 - 最大括号深度:优化非法条件 - 求解连续数列:完善无解的处理(Java版本):https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200603_02.java - 服务器问题:完成(Java版本):https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200603_06.java - 最大N个数和最小N个数的和(Java版本):https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200605_02.java - 加密字符串:已完成(Java版本-可能会超时):https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200605_03.java - 集五福问题(Java版本):https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200606_01.java - https://blog.csdn.net/qq_36209248/article/details/104852005 - 计算堆栈中的剩余数字(Java版本):https://gitee.com/taowd/Java-Learning/blob/master/src/main/java/com/huawei/oo/Huawei_20200606_02.java - 计算堆栈中的剩余数字(Python版本):https://gitee.com/taowd/learn-python3/blob/master/huawei/20200607_02.py ## 2020年6月2日 - 查找算式最小值正确解法:字符串的递归排序 HuaWei_Test20200327_01_02 ## 2020年5月31日 - 排列组合一个字符串:给一个字符串,比如ABC, 把所有的排列,即:ABC, ACB, BAC, BCA, CAB, CBC 都找出来。 https://blog.csdn.net/HelloZEX/article/details/81178615 解题思路(回溯方法递归调用):对于一个n 位的字符串来讲,它是n-1位字符串的排列 加上 没有在 n -1 位字符串里 那个字符 的排列。 ## 2020年5月25日 - 计算链表之和 ## 2020年5月22日 - 字符串相乘 ## 2020年5月17日 - 螺旋矩阵 ## 2020年5月12日 - 字符串相乘 ## 2020年5月8日 - 汉明距离:https://leetcode-cn.com/problems/hamming-distance/ ## 2020年4月23日 - 下一个排列 ## 2020年4月20日 - 最接近的三数之和 ## 2020年4月19日 - 大数相乘 ## 2020年4月18日 - 电话号码的字母组合 ## 2020年4月16日 - Z 字形变换 ## 2020年4月6日 - 选择排序 - 插入排序 - 单向环形链表 ## 2020年4月5日 - 日期函数 ## 2020年4月4日 - 字符占用问题 - PriorityQueue优先队列排序使用的注意点 - 字符串过滤问题 - 空白字符串替换问题 - 最大客人数量 - 多道批处理 - 报文转义 - 流水线问题 - 新增岛屿面积计算问题 ## 2020年4月1日 - 变量替换 - 岛屿的最大面积 ## 2020年3月31日 - 跳跃比赛 - 寻找最长连续子串 - 优先级队列问题 - 磁盘容量排序 ## 2020年3月29日 - 计算岛屿的数量问题 - 质数分解问题 ## 2020年3月28日 - 最长有效括号子串 - 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和 - 猜数字 ## 2020年3月27日 - 插入排序原理 - 查找算式最小值 ## 2020年3月26日 - 前 K 个高频元素:https://leetcode-cn.com/problems/top-k-frequent-elements/submissions/ - 最长回文子串(暴力破解,暂时没理解动态规划解法):https://leetcode-cn.com/problems/longest-palindromic-substring/ - BigInteger 大数操作基本操作熟悉 - 无重复字符的最长子串(暴力破解):https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/submissions/ ## 2020年3月25日 - 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。 - 整理代码结构 - 冒泡排序 - 二分查找归档 ## 2020年3月21日 - 新增快速排序算法实现 ## SingleHungryModel > 单例模式-饿汉模式 ## SingleLazyModel > 单例模式-懒汉模式,多线程环境下可能存在线程安全问题 ## SingleDoubleCheckLock > 单例模式-双重校验锁模式(在懒汉模式的基础之上进行优化,达到最优,线程安全) ## ArrayDemo > 有数组a[n],用java代码将数组元素顺序颠倒 ## DefinationStack > 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 ## DeleteFolder > 定时任务删除指定目录 ## Fibonacci > 斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 ## FindArray > 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 ## FindKthToTail > 输入一个链表,输出该链表中倒数第k个结点。 ## HashMapCountChar > 给定一个字符串,获取字符串中每个字符出现的次数 ## HasSubtree > 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) ## JumpFloor > 跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 ## JumpFloorII > 变态跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 ## Merge > 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 ## MinNumberInRotateArray > 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 ## MirrorTree > 二叉树镜像问题: 操作给定的二叉树,将其变换为源二叉树的镜像。 ## NumberOf1 > 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 ## PokerDemo > 模拟斗地主洗牌发牌 ## PrintListFromTailToHead > 输入一个链表,从尾到头打印链表每个节点的值。 ## PrintMatrix > 顺时针打印矩阵问题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. ## ReConstructBinaryTree > 重构二叉树:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 ## RectCover > 矩形覆盖问题:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? ## ReOrderArray > 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 ## ReplaceSpace > 请实现一个函数,将一个字符串中的空格替换成“%20” ## ReverseList > 反转链表:输入一个链表,反转链表后,输出链表的所有元素。 ## SellTickedDemo > 模拟电影院售票(Thread实现) ## SellTickedDemo2 > 模拟电影院售票(runnable实现) ## StackToQueue > 用两个栈实现一个队列的功能?要求给出算法和思路! ## java8-Lambda Lambda 是一个 匿名函数,我们可以把 Lambda表达式理解为是 一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。