剑指offer
丘山一郎
这个作者很懒,什么都没留下…
展开
-
孩子们的游戏 (约瑟夫环)
每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,...原创 2019-04-16 09:58:52 · 251 阅读 · 0 评论 -
剑指offer 056 删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5//////这里的代码是去除重复的节点,并且将重复结点完全删掉{1,2,2,3,3,4,5}->{1,4,5}public class Solution { ...原创 2019-08-06 15:20:05 · 85 阅读 · 0 评论 -
华为机试(3) 明明的随机数
题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。Input Para...原创 2019-08-01 22:01:57 · 141 阅读 · 0 评论 -
华为机试(2) 计算字符个数
题目描述写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:第一行输入一个有字母和数字以及空格组成的字符串,第二行输入一个字符。输出描述:输出输入字符串中含有该字符的个数。示例1输入复制ABCDEFA输出复制1...原创 2019-08-01 21:04:26 · 123 阅读 · 0 评论 -
华为上机题目(1) 字符串最后一个单词的长度
题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。示例1输入复制hello world输出复制5import java.io.*;import java.util.*;public class Main{ public static void main(String ar...原创 2019-08-01 21:03:11 · 110 阅读 · 0 评论 -
剑指offer 15
题目描述输入一个链表,反转链表后,输出新链表的表头。翻转链表有两种方法,一种是再定义两个指针,另一种是递归的方法定义两个指针的需要注意,以谁为循环的基准;对于递归的方法,深刻理解递归的内涵/*public class ListNode { int val; ListNode next = null; ListNode(int val) { thi...原创 2019-08-03 13:20:58 · 100 阅读 · 0 评论 -
剑指offer 014 输入一个链表,输出该链表中倒数第k个结点。
输入一个链表,输出该链表中倒数第k个结点。最佳代码:Java代码,通过校验。代码思路如下:两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。/*public class ListNode { int val; ListNode nex...原创 2019-08-03 12:13:53 · 105 阅读 · 0 评论 -
剑指offer 01 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。本文的解题方法,有两种思路;一种是用栈的方法;另一种是用递归的方法栈的方法如下/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* ...原创 2019-08-03 10:04:04 · 115 阅读 · 0 评论 -
数据流中的中位数 (用堆,大根堆,小根堆 )
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。import java.util.Comparator;import java.util.PriorityQueu...原创 2019-04-18 21:56:39 · 523 阅读 · 0 评论 -
扑克牌S的顺序
题目:随机抽取扑克牌中的5张牌,判断是不是顺子,即这5张牌是不是连续的。其中A看成1,J看成11,Q看成12,K看成13,大小王可以看成任何需要的数字。分析1:这道题的意思很明确,我们玩扑克的过程中,也经常碰到这样的情况。我们先看看在现实生活中,我们是怎么样处理的,我想大部分人都是这样做的:先把5张牌从小到大进行排序,然后直接判断。而如果碰到大小王,我们会除去大小王之后排序,然后判断不相邻的两个...原创 2019-04-15 13:52:23 · 656 阅读 · 0 评论 -
和为S的两个数字
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路数列满足递增,设两个头尾两个指针i和j,若ai + aj == sum,就是答案(相差越远乘积越小)若ai + aj > sum,aj肯定不是答案之一(前面已得出 i 前面的数已是不可能),j -=...原创 2019-04-15 13:24:31 · 114 阅读 · 0 评论 -
和为S的连续正整数
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序...原创 2019-04-15 12:15:30 · 264 阅读 · 0 评论 -
拼多多 面试题 最大成绩
题目描述给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)输入描述:无序整数数组A[n]输出描述:满足条件的最大乘积示例1输入复制3 4 1 2输出复制24思路/定义五个数,一个最大,一个次大,一个第三大,一个最小,一个次小。只要找到这五个数,问题就解决了。因为最大乘积只可能是最大(次大第三大...原创 2019-04-21 22:00:32 · 839 阅读 · 0 评论 -
字符流中第一个不重复的字符
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。要点:大家注意HashMap和LinkedHashMap的区别,LinkedHashMap是有序的import java...原创 2019-04-16 14:31:06 · 96 阅读 · 0 评论 -
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相加: 5-101,7-111 第一步:相加各位的值,不算进位,得到010,二进制每位相加就相当于各位...原创 2019-04-16 11:05:30 · 311 阅读 · 0 评论 -
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。链接:https://www.nowcoder.com/questionTerminal/7a0da8fc483247ff8800059e12d7caf1来源:牛客网解题思路:1.需利用逻辑与的短路特性实现递归终止。 2.当n==0时,(n>0)...原创 2019-04-16 10:16:24 · 115 阅读 · 1 评论 -
剑指offer 055 链表中环的入口结点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { p...原创 2019-08-06 18:18:24 · 137 阅读 · 0 评论