![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
Java及其养生技术的探讨学习
小毅哥哥1996
天赋,是持续不断的忍耐!
展开
-
手撕代码之“字符串”
文章目录字符串流中第一个只出现一次的字符判断字符串是否表示为数值字符串左旋K位操作正则表达式匹配问题字符串转整数扑克牌顺子翻转一句话中的单词字符串流中第一个只出现一次的字符题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。解题思路1:(1)使用一个HashMap< Character,Integer>来存放字符:个数原创 2020-07-27 09:45:10 · 170 阅读 · 0 评论 -
手撕代码之“数学问题”
文章目录不用加法做加法快速幂整数二进制中的1的个数丑数的个数不用加法做加法题目描述:不使用+ - * /运算符求解两个整数的加法解题思路:将两个整数转化位二进制num1和num2;(1)不考虑进位情况,求两个二进制位相加结果,即int sum=num1^num2;(2)求解两数相加的进位,两数相与在左移一位,即int carry=(num1&num2)<<1;(2)上述两个步骤的结果再次循环计算,直到carry进位为0为止。public class Solution {原创 2020-07-27 09:44:31 · 129 阅读 · 0 评论 -
手撕代码之“数组”
文章目录构建乘积数组数组中重复的数字和为sum的两个数字数组中只有唯一一个元素重复数组中只出现一次的两个数字有序数组统计个数使奇数处于偶数的前面顺时针打印矩阵数组中出现超过一半的元素top K 问题连续子数组最大和把数组中的数字组合成最小的数数组中逆序对问题和为Sum的连续正整数序列构建乘积数组题目描述:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0]原创 2020-07-27 09:43:49 · 181 阅读 · 0 评论 -
手撕代码之“二分查找”
文章目录旋转数组找最小[1,n]整数数组中找1出现的总个数在二维数组中查找值旋转数组找最小题目描述: 输入一个旋转数组,找出这个数组中的最小值,要求时间复杂度为(logn)题目分析:旋转数组:指的是将一个有序的数组的前一部分移动到后一部分,如[1,2,3,4,5]的一个旋转数组为:[2,4,5,1,2]时间复杂度为logn:立刻想到二分法(折半查找)二分查找一般需要个固定的比较值,然而这道题却没有,怎么办?根据题意具体分析有以下几种情况:(1)[4,5,6,1,2,3],arr[mid]&原创 2020-07-27 09:41:00 · 144 阅读 · 0 评论 -
手撕代码之“栈”
文章目录数据流中的中位数问题判断栈的入栈顺序和出栈顺序是否一致包含Min函数的栈结构数据流中的中位数问题题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。题目的分析: 这道题目要使用到PriorityQueue优先级队列,我们先来介绍优先级队列,它是一种特殊的队原创 2020-07-27 09:39:56 · 123 阅读 · 0 评论 -
手撕代码之“动态规划”
文章目录动态规划问题套路剪绳子问题动态规划问题套路(1)确定状态(问题描述中的自变量)和选择(可能改变状态的操作)(2)定义dp表(3)根据选择,思考状态转移的逻辑关系剪绳子问题问题描述 有根长度为m的绳子,把绳子剪成整数长的n段,n<=m,求出每段长度的最大乘积。解题思路使用动态规划的方法求解,按照动态规划的套路开始:状态: 绳子的长度;定义dp: dp[i]表示长度为i的绳子的分段后的最大乘积;选择: 剪和不剪; 不剪切的则为dp[i],自底而上推导:j*dp[i-j]表示剪原创 2020-07-27 09:37:39 · 126 阅读 · 0 评论 -
手撕代码之“递归问题”
文章目录机器人运动范围从矩阵种匹配字符串矩形覆盖问题跳阶梯问题I跳阶梯问题II跳台接问题III跳台阶问题IIII机器人运动范围题目描述:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题分析:(1)利用递原创 2020-07-27 09:36:25 · 118 阅读 · 0 评论 -
手撕代码之“链表”
文章目录删除重复链表链表中找环的入口约瑟夫环问题两条链表中的公共节点复制复杂的链表问题合并两条链表链表的反转输出链表倒数第K个节点从尾到头打印链表删除重复链表题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路:(1)新建一个指向头节点pHead的新节点Head(2)tmp指向链表的实际头节点pHead(3)同原创 2020-07-17 19:53:58 · 203 阅读 · 0 评论 -
手撕代码之查找问题
文章目录旋转数组找最小[1,n]整数数组中找1出现的总个数在二维数组中查找值旋转数组找最小题目描述: 输入一个旋转数组,找出这个数组中的最小值,要求时间复杂度为(logn)题目分析:旋转数组:指的是将一个有序的数组的前一部分移动到后一部分,如[1,2,3,4,5]的一个旋转数组为:[2,4,5,1,2]时间复杂度为logn:立刻想到二分法(折半查找)二分查找一般需要个固定的比较值,然而这道题却没有,怎么办?根据题意具体分析有以下几种情况:(1)[4,5,6,1,2,3],arr[mid]&原创 2020-09-29 08:29:17 · 93 阅读 · 0 评论 -
手撕代码之“二叉树”
文章目录重构二叉树(中等难度)树的镜像(简单)求树的深度(简单)树的平衡性检测(简单)树的层序遍历(中等)二叉树的下一个节点(中等)二叉排序树转换成双端链表(中等)子树问题(简单)二叉搜素树的第k个节点二叉树的序列化与反序列化Z字形打印树对称二叉树根节点到叶子节点和为sum的问题总结是否存在路径找到所有的路径计算路径的总条数BST后序遍历序列总结重构二叉树(中等难度)题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍原创 2020-07-07 09:29:05 · 513 阅读 · 2 评论 -
java并发编程基础部分(一)
文章目录java中的多线程(入门)1.线程1.1多线程的执行原理1.2多线程的创建方法1.3Thread和Runnable的区别1.4匿名内部类方式实现线程的创建2.线程的安全产生安全问题的原因使用java的线程同步机制来解决线程安全问题同步原理3.线程的状态生产者消费者案例并发编程并发编程的硬件基础什么是并发?并发编程的三大特性java如何保证并发编程的三大特性Java的内存模型volatile关键字的详细解释volatile的作用线程内的共享变量(ThreadLocal)多个线程之间的数据共享java原创 2020-06-18 11:33:17 · 116 阅读 · 0 评论 -
微服务项目持续集成部署流程
文章目录微服务项目持续集成部署流程Gogs容器的安装与应用jenkins实现持续的集成微服务项目持续集成部署流程什么是持续化集成(continous itergration)?为了加快软件开发速度,加强团队成员间的合作力度,简化项目的部署流程,使用一种自动编译、打包、测试、发布等技术来实现自动化的集成项目。在实现这一目标之前,我们需要做较多的前提工作:Gogs安装,主要用个人的git服务替代github等等网站,把代码和控制权力掌握在自己手上。总之,Gogs就是个人版的github和码云。jeki原创 2020-05-27 22:25:46 · 315 阅读 · 0 评论