剑指offer_Java
文章平均质量分 55
yingzoe
这个作者很懒,什么都没留下…
展开
-
【剑指offer】二维数组中的查找 ★★
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:从矩阵的左下角或右上角开始搜索,如果目标<当前矩阵值,那么目标值肯定不在当前行,在上面的行中如果目标>当前矩阵值,那么目标值肯定不在当前列,在右边的列中...原创 2018-11-24 10:07:14 · 100 阅读 · 0 评论 -
【剑指offer】数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): # write code here if not data: return 0 loc = self.Find(data,...原创 2019-03-24 14:26:27 · 70 阅读 · 0 评论 -
【剑指offer】平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:方法一:前序遍历# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None####...转载 2019-03-24 16:59:22 · 70 阅读 · 0 评论 -
【剑指offer】正则表达式匹配 python ★★★★★★
题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配思路分析匹配所有可能的情况:参考https://blog.csdn.net/ch...原创 2019-03-27 16:02:12 · 296 阅读 · 0 评论 -
背包问题 ★★★★★★
参考:详细:https://blog.csdn.net/na_beginning/article/details/62884939九种背包问题,让你永恒拥有背包算法(贪心):https://mp.csdn.net/postedit/8905975801背包:https://blog.csdn.net/weixin_39059738/article/details/799240490..................原创 2019-04-06 21:08:21 · 419 阅读 · 0 评论 -
【LeetCode】最长上升子序列 python ★★★★★★
最详解析:https://blog.csdn.net/qq_17550379/article/details/82871892给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。方法一:动态规划记录每个元素前面出现的比它小的元素个数。...原创 2019-04-03 09:29:25 · 1246 阅读 · 0 评论 -
【LeetCode】股票的最大盈利值(python)
LeetCode原题:题号:121. Best Time to Buy and Sell Stock链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/《剑指offer》题目描述:给定一个整形数组,其中的第i个元素代表股票第i天的价格。在一开始,你手里有足够的钱,但没有股票。你仅...原创 2019-04-12 14:35:18 · 2648 阅读 · 0 评论 -
【LeetCode】【Manacher’s Algorithm】 最长回文子串、两个数组的中位数的经典解法
超详细的讲解在这里~我只能说看得我眼都花了,看完一遍之后脑子一片空白。。。(我是谁?我在干什么?)大致地看明白以上的讲解,还是直接看程序比较明白!并且简单地梳理了一下前面的内容,讲了这么多,其实最关键的就是:分四种情况考虑:当 L[currentLeftPosition] < centerRightPosition - currentRightPosition时:L[cur...转载 2019-04-15 22:37:28 · 154 阅读 · 0 评论 -
【剑指Offer】数据流中的中位数 (Python)
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路方法一:牛客网不支持导包,所以编译出错……但是按照剑指offer上的思路来说,理应使用最大堆、...原创 2019-04-09 22:16:17 · 313 阅读 · 0 评论 -
【剑指Offer】二进制表示中1的个数 (Python)
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。注意事项:首先需要判断n是不是负数,当n为负数的时候,直接用while循环判断会导致死循环,因为负数向左移位的话最高位补1。一个int为8位,所以负数的情况中需要判断32个字节中1的个数。# -*- coding:utf-8 -*-class Solution: def NumberOf1(s...原创 2019-04-14 15:58:42 · 298 阅读 · 0 评论 -
【LeetCode 65】Valid Number (Python)
有限状态机:https://blog.csdn.net/suwei19870312/article/details/12094233class Solution(object): def isNumber(self, s): """ :type s: str :rtype: bool """ i...原创 2019-04-23 15:55:41 · 367 阅读 · 0 评论 -
【剑指offer】数组中的逆序对(Python)
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007解法方法一:归并排序:(AC 75%)归并排序可得到时间复杂度为O(n*logn)的方法,也就是在归并排序法的基础上添加一行代码:cout += len(left)-l...转载 2019-05-03 15:52:59 · 702 阅读 · 0 评论 -
【剑指Offer】数据流中的中位数 (Python)
题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)方法一:class Solution: # 返回二维列表,内部每个列表表示找到的路径 def FindPath(self, root, expectNumbe...原创 2019-04-30 17:52:05 · 537 阅读 · 1 评论 -
【python】二分查找
**必须是有序序列才可以使用二分查找。1. 查找的数组中无重复元素:方法一:非递归def find(data,k): first = 0 last = len(data)-1 while first <= last: mid = (first+last)//2 if k == data[mid]: ...原创 2019-03-24 14:09:35 · 348 阅读 · 1 评论 -
【剑指offer】两个链表的第一个公共节点(Python)
题目描述输入两个链表,找出它们的第一个公共结点。思路方法一:两个有公共节点的链表是Y字型的结构,自公共节点后是重合的。可以借助两个栈先存储链表的节点。然后两个栈每次出栈一个节点,如果是重合节点,那么这两个节点是相等的。所以最后一个相等的节点就是第一个公共节点。# -*- coding:utf-8 -*-# class ListNode:# def __init__(s...转载 2019-03-24 11:33:40 · 483 阅读 · 0 评论 -
【剑指offer】不用加减乘除做加法(Python)
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路详细参考:https://www.jianshu.com/p/42fb154f0851这里解释了为什么要加入return num1 if num1<=0x7FFFFFFF else ~(num1^0xFFFFFFFF)的判断:https://blog.csdn.net/u012505...原创 2019-03-26 22:01:56 · 519 阅读 · 2 评论 -
【剑指offer】替换空格 ★
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:这题很简单,但对于用习惯了python刚转入门Java的我来说,对Java语法的应用需要熟悉~附上这篇【Java中String与StringBuffer常用方法汇总】https://blog.csdn....原创 2018-11-24 20:19:03 · 101 阅读 · 0 评论 -
【剑指offer】从尾到头打印链表 ★
题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:注意【从尾到头】的顺序~Java中的ArrayList集合定义、遍历、方法:https://blog.csdn.net/zamaque/article/details/80286361import java.util.ArrayList;public class Solution { ...原创 2018-11-24 21:00:46 · 96 阅读 · 0 评论 -
【剑指offer】重建二叉树 ★★★
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:知道整体思路是:在二叉树的前序遍历序列中,第一个数字总是树的根结点的值。但在中序遍历序列中,根结点的值在序列的中间,左子树的结点...原创 2018-11-25 12:09:46 · 147 阅读 · 0 评论 -
【剑指offer】跳台阶 ★★★★
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路:我原本的思路是把它看成一个含有重复数字的全排列组合问题,:先单独考虑台阶为0、1、2的情况:if (target == 0) return 0;else if (target == 1) return 1;else if (target ==...原创 2018-12-14 16:56:50 · 110 阅读 · 0 评论 -
【剑指offer】栈的压入、弹出序列 ★★★
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。思路:参考:http://blog.sina.com.cn/s/blog_a1ce3d4b0102wj37.htm...转载 2019-03-07 11:34:41 · 101 阅读 · 0 评论 -
【剑指offer】和为S的两个数
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的思路:方法一:粗暴遍历法# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): # write code here...原创 2019-03-24 21:10:30 · 79 阅读 · 0 评论 -
【剑指offer】数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007思路方法一:运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。case通过率为50.00%class Solution: def I...原创 2019-03-21 20:47:59 · 96 阅读 · 0 评论 -
【剑指offer】翻转单词顺序序列(Python)
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:一:按空格...转载 2019-03-25 11:26:49 · 582 阅读 · 0 评论 -
【剑指offer】扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K...原创 2019-03-25 14:01:26 · 64 阅读 · 0 评论 -
【剑指offer】圆圈中最后剩下的数字 python
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....转载 2019-03-25 15:29:11 · 366 阅读 · 0 评论 -
【剑指offer】最小K个数
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。方法一:使用python自带的sort()函数代码超简单 ~~ 但可能面试的时候面试官不允许QQ# -*- coding:utf-8 -*-class Solution: def GetLeastNumbers_Solution(self, t...原创 2019-03-13 17:12:13 · 91 阅读 · 0 评论 -
【剑指offer】求1+2+3+...+n python
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路利用逻辑与的短路特性实现递归终止。“or”运算符表示“或”,有一个为真则全部为真;前半部分判断出来是真的,后半部分就不再进行运算了。 “and”运算符表示“与”,前一项为假则整个表达式为假,因此可以利用这个性质进行递归运算或者...转载 2019-03-26 19:51:25 · 1009 阅读 · 0 评论 -
整数中1出现的次数
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。思路设N = abcde ,其中abcde分别为十进制中各位上的数......原创 2019-05-18 20:52:46 · 116 阅读 · 0 评论