随笔 - 545
文章 - 0
评论 - 31
阅读 -
72万
04 2019 档案
两个链表的第一个公共结点
摘要:https://www.nowcoder.com/questionTerminal/6ab1d9a29e88450685099d45c9e31e46 描述 输入两个链表,找出它们的第一个公共结点。 解析 一般解法: 找出2个链表的长度,然后让长的先走两个链表的长度差,然后再一起走(因为2个链表用公共
阅读全文
数组中出现次数超过一半的数字
摘要:https://www.nowcoder.com/questionTerminal/e8a1b01a2df14cb2b228b30ee6a92163 描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组
阅读全文
把数组排成最小的数
摘要:https://www.nowcoder.com/questionTerminal/8fecd3f8ba334add803bf2a06af1b993 描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字
阅读全文
二叉搜索树建双向链表
摘要:https://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5 描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解析 中序遍历即可。注意保存
阅读全文
链表中环的入口点
摘要:https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4 描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解析 第一步,找环中相汇点。分别用p1,p2指向链表头部,p1每次走
阅读全文
[LeetCode] 80. Remove Duplicates from Sorted Array II ☆☆☆(从有序数组中删除重复项之二)
摘要:https://leetcode.com/problems/remove-duplicates-from-sorted-array-ii/discuss/27976/3-6-easy-lines-C%2B%2B-Java-Python-Ruby 描述 Follow up for "Remove Du
阅读全文
[LeetCode] 83. Remove Duplicates from Sorted List ☆(从有序链表中删除重复项)
摘要:描述 Given a sorted linked list, delete all duplicates such that each element appear only once. Example 1: Input: 1->1->2Output: 1->2Example 2: Input: 1
阅读全文
[LeetCode] 26. Remove Duplicates from Sorted Array ☆(从有序数组中删除重复项)
摘要:[LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项 描述 Given a sorted array nums, remove the duplicates in-place such that each element appear o
阅读全文
二分变种
摘要:你真的会写二分查找吗 二分查找 二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。 每次移动left和right指针的时候,需要在mid的基
阅读全文
数字在排序数组中出现的次数
摘要:https://www.nowcoder.com/questionTerminal/70610bf967994b22bb1c26f9ae901fa2 描述 统计一个数字在排序数组中出现的次数。 解析 二分变种 详情可看 算法--二分变种 巧妙思路 因为data中都是整数,所以可以稍微变一下,不是搜索
阅读全文
顺时针打印矩阵
摘要:https://www.nowcoder.com/questionTerminal/9b4c81a02cd34f76be2659fa0d54342a 描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11
阅读全文
二叉搜索树的后序遍历序列
摘要:https://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd 描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解析
阅读全文
对称二叉树
摘要:描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 即:左右子树互为镜像。 解析 左右互相比较即可。 代码
阅读全文
栈的压入、弹出序列
摘要:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106 描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5
阅读全文
删除链表中的重复节点
摘要:https://www.nowcoder.com/questionTerminal/fc533c45b73a41b0b44ccba763f866ef 描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->
阅读全文
树的子结构
摘要:https://www.nowcoder.com/questionTerminal/6e196c44c7004d15b1610b9afca8bd88 描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解析 递归判断。当子树的根节点值等于大树的某个节点,
阅读全文
合并2个排序的链表
摘要:描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解析 节点依次比较,指针移动。类似归并的merge方法,思路一样。 代码
阅读全文
调整数组顺序使奇数都在偶数前
摘要:描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解析 简单插入排序就行。 优化点:当往后一轮,没有数据交换,说明奇数都在前面了。退出循环即可。 代码
阅读全文
用2个栈实现队列
摘要:描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解析 其实就是将栈的先进后出,变为队列的先进先出。 stack1用来入栈。当push stack1时,将stack1的所有元素放到stack2,直到stack1为空。再将新值push进去,再将stack2的所
阅读全文
前序中序重建二叉树
摘要:根据前序和中序遍历重建二叉树 描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解析 先来分析一下前序遍历
阅读全文
链表中倒数第k个结点
摘要:描述 输入一个链表,输出该链表中倒数第k个结点。 解析 用两个指针就行,前面的指针先于后面的指针k个节点。 或者,用栈啊,先进后出。 代码
阅读全文
旋转数组的最小数字
摘要:描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解析 既然是旋转
阅读全文
青蛙跳N阶(变态跳)
摘要:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解析 关于本题,前提是n个台阶会
阅读全文
Mysql可重复读、避免幻读原理
摘要:mysql可重复读现象及原理分析 InnoDB 可重复读隔离级别的底层实现原理 MySQL事务隔离级别和MVCC (undo日志版本链,ReadView) MVCC文章勘误 mysql Innodb在RR级别如何避免幻读 可重复读概念 可重复读的实现 Repeatable Read(可重复读):一个
阅读全文
动态规划典型例题--连续子数组的最大和
摘要:动态规划典型例题--连续子数组的最大和 描述 给定一个数组arr,数组中的元素有整数也有负数,数组中的一个或者连续多个数组成一个子数组。 求所有子数组里面的最大和。例如现在有数组 {1 , -2 , 3 , 10 , -4 , 7 , 2 , -5 }。 解析 暴力 用暴力的方法,找出所有可能的子数
阅读全文
行列有序的二维数组查找
摘要:描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 输入描述: array: 待查找的二维数组 target:查找的数字 输出描述: 查找到返回true,查找不到返回false
阅读全文
volatile原理解析
摘要:Java并发编程:volatile关键字解析 volatile 有序性、可见性 volatile可以保证一定程度上有序性,即volatile前面的代码先于后面的代码先执行。 但是前、后代码,各自里面的顺序性是无法保证的。 可见性: 在Java内存模型中,允许编译器和处理器对指令进行重排序,但是重排序
阅读全文
Linux五种IO模型(同步 阻塞概念)
摘要:Linux五种IO模型 同步和异步 这两个概念与消息的通知机制有关。 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。比如,调用readfrom系统调用时,必须等待IO操作完成才返回。 异步 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处
阅读全文
springboot自动装配、启动后执行
摘要:spring boot(二):启动原理解析 (nice) Spring Boot自动配置原理 springboot自动装配 springboot配置文件 Spring Boot的出现,得益于“习惯优于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),这是基于Spring
阅读全文
Mysql优化要点
摘要:优化MySQL Mysql优化要点 慢查询 Explain mysql慢查询 注意事项 SELECT语句务必指明字段名称 SELECT *增加很多不必要的消耗(cpu、io、内存、网络带宽);增加了使用覆盖索引的可能性;当表结构发生改变时,前断也需要更新。所以要求直接在select后面接上字段名。
阅读全文
ConcurrentHashMap1.8源码解析
摘要:深入并发包 ConcurrentHashMap 概述 JDK1.8的实现已经摒弃了Segment的概念,而是直接用Node数组+链表+红黑树的数据结构来实现,并发控制使用Synchronized和CAS来操作,整个看起来就像是优化过且线程安全的HashMap,虽然在JDK1.8中还能看到Segmen
阅读全文
通过BeanPostProcessor理解Spring中Bean的生命周期
摘要:通过BeanPostProcessor理解Spring中Bean的生命周期及AOP原理 Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProcessor解析 Spring bean的生命周期 Spring作为一个优秀的框架,拥有良好的可扩展性。S
阅读全文
二叉树的镜像(反转二叉树)
摘要:反转二叉树 java实现 描述 实现二叉树的反转 示例: 原二叉树: 解析 递归 1.判断根是否为空,根为空直接返回根;否则继续;2.递归反转根的左右子树 非递归 1.判断根是否为空,根为空直接返回根;否则继续;2.交换根节点的左右子节点;3. 交换第二层结点的左右子树;4 重复下去,最后一个结点。
阅读全文
给定字符串的全排列
摘要:算法笔记_025:字符串的全排列(Java) 回溯算法详解 描述 输入一个字符串,打印出该字符串的所有排列。例如,输入字符串”abc”,则输出有字符’a’,’b’,’c’所能排列出来的所有字符串”abc”,”acb”,”bac”,”bca”,”cab”,”cba”。 解决方案 递归实现 从字符串中选
阅读全文
ForkJoin
摘要:Java Fork/Join 框架 jdk1.8-ForkJoin框架剖析 Java的Fork/Join任务,你写对了吗? 概述 从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。 这种思想
阅读全文
阻塞队列
摘要:Java并发编程:阻塞队列 阻塞队列 今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那
阅读全文
BeanFactoryPostProcessor扩展机制
只有注册用户登录后才能阅读该文。
[LeetCode] 231. Power of Two ☆(是否2 的幂)
摘要:描述 Given an integer, write a function to determine if it is a power of two. 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 解析 2的幂只有1个1 仔细观察,可以看出 2 的次方数都只有一个 1 ,剩下的都是 0
阅读全文
[LeetCode] 191. Number of 1 Bits ☆(位 1 的个数)
摘要:描述 Write a function that takes an unsigned integer and return the number of '1' bits it has (also known as the Hamming weight). 输入是一个无符号整数,返回其二进制表达式中数
阅读全文
[LeetCode] 201. Bitwise AND of Numbers Range ☆☆☆(数字范围按位与)
摘要:https://leetcode.com/problems/bitwise-and-of-numbers-range/discuss/56729/Bit-operation-solution(JAVA) 面试官,你再问我 Bit Operation 试试? 描述 Given a range [m,
阅读全文
Spring循环依赖
摘要:Spring-bean的循环依赖以及解决方式 Spring里面Bean的生命周期和循环依赖问题 什么是循环依赖? 循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图: 注意,这里不是函数的循环调用,是对象的相互依赖关
阅读全文
父类上的注解能被子类继承吗
摘要:父类上的注解能被子类继承吗 我们知道在编写自定义注解时,可以通过指定@Inherited注解,指明自定义注解是否可以被继承。但实现情况又可细分为多种。 测试环境如下 父类的类上和方法上有自定义的注解--MyAnnotation 子类继承了这个父类,分别: 子类方法,实现了父类上的抽象方法 子类方法,
阅读全文
[LeetCode] 108. Convert Sorted Array to Binary Search Tree ☆(升序数组转换成一个平衡二叉树)
摘要:108. Convert Sorted Array to Binary Search Tree 描述 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. F
阅读全文