首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
Ironxin
华为_2012实验室_软开
获赞
842
粉丝
39
关注
8
看过 TA
45
男
门头沟学院
2021
Java
IP属地:上海
跨行小白 要努力变强
私信
关注
拉黑
举报
举报
确定要拉黑Ironxin吗?
发布(183)
评论
刷题
收藏
Ironxin
关注TA,不错过内容更新
关注
2020-04-21 20:36
华为_2012实验室_软开
《剑指offer》 第54题 二叉搜索树的第k个节点
题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。 题目给出的是该二叉树的层序遍历结果。实际如图 可以看到,4是按大小排序时,第3个节点。如果K=3,即4为所求的值。而对应大小排序的就是中序遍历,中序遍历结果是{2,3,4,5,6,7,8},所以本题核心需要使用到中序遍历。然后对中序遍历的结果中,取第K个元素即可。这里可以使用数字或者集合存储遍历结果,然后取第k个,但是会产生额外的空间复杂度,当然也可以使用一个变量记录遍历的节点数,当遍历到K个节点时即为所求。 写法1: 使用数组存储,代码看起来非常的清...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-20 22:59
华为_2012实验室_软开
2020.04.20 在牛客打卡7天!
0
点赞
评论
收藏
分享
2020-04-20 22:55
已编辑
华为_2012实验室_软开
《剑指offer》 第67题 字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 比如+2147483647,就是有效的2147483647。而1a33就是无效的,因为有个a。 这道题对跨行过来的不太友好,需要一些编码的基础知识,就很难受。而且本题的边界需要考虑的比较详细(例如null、空字符串、带有正负号、字符不是数字、溢出等等)。我将按照某个通过测试的代码,分析整个解题思路。 思路:首先什么边界都不考虑,用最简单的来思考,就是字符串123转换成数字123,ASCII码中48~57为0到9十个阿拉伯数字。所以,当字符1要转换成数字1时,需要将字符1转...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-19 23:38
已编辑
华为_2012实验室_软开
《剑指offer》 第62题 圆圈中最后剩下的数字
题目描述 0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 方法很多,这里记录几种用的比较多的解法 解法1: 第一想法肯定是使用环形链表 public class Solution { public int LastRemaining_Solution(int n, int m) { class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } if (n <= 0 || m <= 0)...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-19 22:11
华为_2012实验室_软开
2020.04.19 在牛客打卡6天!
0
点赞
评论
收藏
分享
2020-04-19 22:24
已编辑
华为_2012实验室_软开
《剑指offer》 第61题 扑克牌顺子
题目:从扑克牌种随机抽5张牌,判断是不是一个顺子,即是否连续。2~10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以表示任意数字。(大小王可以超过2个) 解法1: 首先是将大小王表示任意数字(可能有多个大小王),等价成0可以表示任意数字。也就是{0,2,3,5,6}会被看成是顺子。那么思路如下:1.对抽到的5张牌进行排序;2.找出0的个数;3.算出相邻数字的空缺总数;比如3和5之间相差2,必须要有1个0才行。相差3就得要有两个04.如果0的个数大于等于空缺总数,说明连续,反之不连续;5.需要判断相邻数字是否相等,如果有出现相等,说明不是顺子。 调用了系统的排序算法。排序...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-19 20:19
华为_2012实验室_软开
你好,我在刷剑指offer看题解的时候,有显示比如25篇题解,但是只能看到前十个,我想问问,是只显示前十个吗
0
点赞
评论
收藏
分享
2020-04-18 23:51
华为_2012实验室_软开
2020.04.18 在牛客打卡5天!
0
点赞
评论
收藏
分享
2020-04-19 00:19
已编辑
华为_2012实验室_软开
《剑指offer》 第59.1题 队列最大值之滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}。针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。 在每个滑动窗口依次比较找出最大值,每进来一个数循环比较一次,然...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-18 19:55
华为_2012实验室_软开
深入理解Java虚拟机Day6 (高效并发)
第12章 Java内存模型与线程 12.1 概述 12.2 硬件的效率与一致性 12.3 Java内存模型 1 主内存与工作内存 Java内存模型规定了所有的变量都存储在主内存(Main Memory)中(此处的主内存与介绍物理硬件时提到的主内存名字一样,两者也可以类比,但物理上它仅是虚拟机内存的一部分)。每条线程还有自己的工作内存(Working Memory,可与前面讲的处理器高速缓存类比),线程的工作内存中保存了被该线程使用的变量的主内存副本,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的数据。不同的线程之间也无法直接访问对方工作内存中的变量,线程...
0
点赞
评论
收藏
分享
2020-04-17 22:39
已编辑
华为_2012实验室_软开
《剑指offer》 第58.2题 翻转字符串之左旋转字符串
题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab"。 首先最直观的,我们肯定会想到使用库函数的拼接方法,来解决本题,但是,平心而论,如果在面试或者笔试中出现这题,考点肯定不是考你会不会使用库函数,屏蔽了大量的库函数体现不出差距,基础扎实才有更多机会,所以库函数需要会使用,而不用库函数的方法也应该掌握。 解法1: 在不使用库函数的时候,如果做过58.1题,也就牛客上的,翻转单词顺序这道题,就可以理解到,本题虽然是旋转字符串,实则也是...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-17 21:46
华为_2012实验室_软开
《剑指offer》 第58.1题 翻转字符串之翻转单词顺序
题目描输入一个英文句子,翻转句子的单词顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字符一样处理。例如,“student. a am I”。正确的输出应该是“I am a student.”。牛客上输入的是字符串,输出也是字符串。 一种解题思路,也是offer书上的,先翻转整个字符串,再对每个单词翻转。也有利用栈来完成翻转过程的解法。对于空格的处理也会出现新的解法。 java涉及到字符串操作的可以分成两类,String和(StringBuilder、StringBuffer)两类。因此,选取不同的类的写法不同。可以调用StringBuffer的函数来完成。 解法1: 使用...
王总even:
解法一中的 else if (end == arr.length || arr[end] == ' '), 如果调换内部顺序换成else if (arr[end] == ' '||end == arr.length ) 就会报数组越界异常
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-16 23:36
华为_2012实验室_软开
深入理解Java虚拟机Day5(程序编译与代码优化)考虑到可能不是面试重点,暂时跳过
第10章 前端编译与优化 10.1 概述 在Java技术下谈“编译期”而没有具体上下文语境的话,其实是一句很含糊的表述,因为它可能是指一个前端编译器(叫“编译器的前端”更准确一些)把.java文件转变成.class文件的过程;也可能是指Java虚拟机的即时编译器(常称JIT编译器,Just In Time Compiler)运行期把字节码转变成本地机器码的过程;还可能是指使用静态的提前编译器(常称AOT编译器,Ahead Of Time Compiler)直接把程序编译成与目标机器指令集相关的二进制代码的过程。 本章主要讲JIT编译器 10.2 Javac编译器 Javac编译器是用...
0
点赞
评论
收藏
分享
2020-04-16 21:48
已编辑
华为_2012实验室_软开
《剑指offer》 第57.2题 和为S的连续正数序列
题目描述和为S的连续正数序列:输入一个正数S,打印所有和为S的连续正数序列(至少含有两个数)例如,输入15,有1+2+3+4+5和4+5+6和7+8三种情况,所以打印三个序列。 思路:如果做过57.1题,和为S的两个数字这道题,就可以借鉴做法。即利用两个指针记录首尾,然后进行相关操作。本题使用一前一后两个指针,两个指针范围内的数字之和cur和给定的sum进行判断。过程:以15为例,假如我们找到了{4,5,6},需要找下一个解,其实我们可以有3个选择,移动first,移动last,或者两个指针都移动。书中选择移动last.这里我选择的是两个指针都移动,并且同步更新当前的范围之和cur。如果cu...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
2020-04-16 18:09
已编辑
华为_2012实验室_软开
《剑指offer》 第57.1题 和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 比如数组是{1,2,4,7,8,11,15},求和为15。有4+11=15和7+8=15两组解 显然可以拿一个数比完一轮后,换下一个数再比一轮,这样的时间复杂度是O(n^2)。所以需要找到更优化的方法。这里需要提到一点:最后的结果可能有很多组,但是题目并没有要求全部求出,因此,求出任意一个解就可以了。 首先我们思考,如果我们随便拿到了两个数,比如2和15两个数,和为17,而要求和为15,那么我们肯定希望拿到的两个数变小一点,由于数组是递增的,我们可以取...
白的不能再白的小白想刷剑...
0
点赞
评论
收藏
分享
1
6
7
8
9
10
13
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务