![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
沐婉清
每一天,都要努力前行~~~~
展开
-
剑指Offer-1.二维数组中的查找(Python)
二维数组中的查找 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法一: 从右上角元素开始遍历,比元素大则向下移,小则向左移,对后面所有元素均符合此逻辑# -*- coding:utf-8 -*-class Solution: # ...原创 2018-05-07 03:12:05 · 365 阅读 · 0 评论 -
剑指Offer-31.整数中1出现的次数(从1到n整数中1出现的次数)(Javascript)
31.整数中1出现的次数(从1到n整数中1出现的次数)《剑指Offer》刷题GitHub链接题目链接题目描述求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的...原创 2019-07-08 16:24:11 · 652 阅读 · 0 评论 -
剑指Offer-28.数组中出现次数超过一半的数字(Javascript)
28.数组中出现次数超过一半的数字《剑指Offer》刷题GitHub链接题目链接题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路这里用了一个对象来保存每个数字出现的次数,一旦一个数字出现的次数超过了数组长度的...原创 2018-10-27 17:52:01 · 521 阅读 · 0 评论 -
剑指Offer-29.最小的K个数(Javascript)
29.最小的K个数《剑指Offer》刷题GitHub链接题目链接题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。解题思路我使用的冒泡排序Codefunction GetLeastNumbers_Solution(input, k){ // write code here var len...原创 2018-10-27 17:51:19 · 370 阅读 · 0 评论 -
剑指Offer-30.连续子数组的最大和(Javascript)
30.连续子数组的最大和《剑指Offer》刷题GitHub链接题目链接题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量...原创 2018-10-27 17:50:19 · 808 阅读 · 0 评论 -
剑指Offer-26.二叉搜索树与双向链表(Javascript)
26.二叉搜索树与双向链表《剑指Offer》刷题GitHub链接题目链接题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路因为要对二叉搜索树重新排序为双向链表,因此可以看出此题应当用中序遍历,看到树的题目,基本要想到递归和前中后序遍历。两种解题思路,均基于递归。这里要注意:C++的指针类解法...原创 2018-10-20 10:21:53 · 509 阅读 · 0 评论 -
剑指Offer-21.栈的压入、弹出序列(Javascript)
21.栈的压入、弹出序列《剑指Offer》刷题GitHub链接题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路额外使用一...原创 2018-10-17 20:19:50 · 249 阅读 · 0 评论 -
剑指Offer-25.复杂链表的复制(Javascript)
25.复杂链表的复制《剑指Offer》刷题GitHub链接题目链接题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路此题有两种方法:采用递归,每次将.next作为参数递归,.next为下一个"pHead...原创 2018-10-19 22:25:19 · 400 阅读 · 0 评论 -
剑指Offer-24.二叉树中和为某一值的路径(Javascript)
24.二叉树中和为某一值的路径《剑指Offer》刷题GitHub链接题目链接题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路二叉树的问题基本要回归到递归上判断当前节点的值是否满足target,若满足,再判断是否为叶...原创 2018-10-19 22:24:20 · 455 阅读 · 0 评论 -
剑指Offer-20.包含min函数的栈(Javascript)
4.包含min函数的栈《剑指Offer》刷题GitHub链接题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解题思路这里采用了+多一个栈来存放最小值的方法。我看到的有两种解法:当node < stack2的最后一个值时,才push进来,那么pop的时候就需要验证stack1 pop出来的那个值是否等于stack2...原创 2018-10-16 18:27:03 · 469 阅读 · 0 评论 -
剑指Offer-23.二叉搜索树的后序遍历序列(Javascript)
23.二叉搜索树的后序遍历序列《剑指Offer》刷题GitHub链接题目链接题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路二叉搜索树的特点:某一个节点左子树的所有节点的值都比该节点小,右子树的所有节点的值都比该节点大依次与数组最后一个值比较,一直小于最后一个数的是左子树...原创 2018-10-18 19:50:28 · 667 阅读 · 0 评论 -
剑指Offer-22.从上往下打印二叉树(Javascript)
22.从上往下打印二叉树《剑指Offer》刷题GitHub链接题目链接题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路用一个queue来保存节点,一个list来保存打印的值每次弹出queue的第一个值,然后把其value放入list,再将其左节点和右节点依次放到queue的最后。如此,每次放入list的都会是最高层从左至右的value值。java...原创 2018-10-17 22:04:12 · 296 阅读 · 0 评论 -
剑指Offer-3.从头到尾打印链表(C++)
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。分析(这里我一开始以为是返回一个链表…没想到是返回一个ArrayList…)看给定的代码,这里的返回值是一个int类型的vectorc++的vector可以用insert()函数来向指定位置插入元素,arr.begin()表示在头部,arr.end()表示在尾部。例如://在头部插入10arr.insert(...原创 2018-09-21 23:50:36 · 422 阅读 · 0 评论 -
二叉搜索树的第K个结点
题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。分析其实这就是个中序遍历的变形,因为对于一个二叉搜索树,它最后大小的顺序与中序遍历的遍历顺序是一样的一个公共变量可以在public中定义递归中,return不会结束所有递归,只会返回到上一层调用的地方返回的值的类型需要在函数前定义,和接受返回值...原创 2018-09-20 01:22:55 · 245 阅读 · 0 评论 -
C++ 二叉树(附'二叉树的镜像'算法题答案)
二叉树广度遍历:队列深度遍历:递归(也可以用栈来实现)#include<iostream>#include<queue>using namespace std;struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int value){ ...原创 2018-09-18 23:11:53 · 514 阅读 · 0 评论 -
剑指Offer-5.用两个栈实现队列(Python)
题目链接 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路栈:先入后出队列:先入先出感觉这像一道小学的趣味数学题.. 两个玻璃管,把钢珠放进去,如何让最后钢珠出来的时候的顺序和放进去的顺序相同?可以想到答案就是:两个玻璃管互相倒一下~代码:# -*- coding:utf-8 -*-clas...原创 2018-05-15 10:10:01 · 621 阅读 · 0 评论 -
剑指Offer-2.替换空格(Python)
题目链接 题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy代码:# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # writ...原创 2018-05-08 14:50:36 · 582 阅读 · 0 评论 -
剑指Offer-3.从头到尾打印链表(Python)
题目链接 题目描述 输入一个链表,从尾到头打印链表每个节点的值。代码:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部...原创 2018-05-08 14:45:29 · 2375 阅读 · 0 评论 -
剑指Offer-32.把数组排成最小的数(Javascript)
32.把数组排成最小的数《剑指Offer》刷题GitHub链接题目链接题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路这里需要用到Array.prototype.sort()的方法,先按照既定的规则将numbers中的元素按顺序排列,然后再将排...原创 2019-07-08 16:25:12 · 375 阅读 · 0 评论