
牛客网
文章平均质量分 50
jialun0116
浙江工业大学
展开
-
SQL88 牛客网练习 巧求中位数
SQL88 牛客网练习TM小哥和FH小妹在牛客大学若干年后成立了牛客SQL班,班的每个人的综合成绩用A,B,C,D,E表示,90分以上都是A,80 90分都是B,60 70分为C,50 60为D,E为50分以下因为每个名次最多1个人,比如有2个A,那么必定有1个A是第1名,有1个A是第2名(综合成绩同分也会按照某一门的成绩分先后)。每次SQL考试完之后,老师会将班级成绩表展示给同学看。现在有班级成绩表(class_grade)如下:第1行表示成绩为A的学生有2个…最后1行表示成绩为D的学生有原创 2021-04-08 14:50:14 · 456 阅读 · 0 评论 -
JZ67_剪绳子
JZ67_剪绳子知识点:动态规划题目链接题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入一个数n(2 <= n <= 60)输入: 8输出: 18解题思路当绳子长度为2、3时很好判断当大于等于4时,可以把左边的当作一段,原创 2021-04-08 10:28:34 · 128 阅读 · 0 评论 -
JZ64_滑动窗口的最大值
JZ64_滑动窗口的最大值知识点:队列题目链接题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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原创 2021-04-07 16:08:39 · 114 阅读 · 0 评论 -
JZ63_数据流中的中位数
JZ63_数据流中的中位数知识点:最大最小堆题目链接题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路这里要求中位数,最笨的方法就是放入数组中排序如果是奇数个,我们希望能快速拿到中间的;偶数个,希望拿到前面部分最大的,后面部分最小的;由此我们想到最原创 2021-04-07 11:00:36 · 218 阅读 · 0 评论 -
JZ62_二叉搜索树的第k个结点
JZ62_二叉搜索树的第k个结点知识点:二叉树题目链接题目描述给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。输入: {5,3,7,2,4,6,8},3输出: {4}解释: 按结点数值大小顺序第三小结点的值为4解题思路这里有两种解法:递归和非递归我们知道这是一颗二叉搜索树,中序遍历的结果是有序的,最简单的就是中序遍历放入数组中,这里就不在赘述对于递归的方法:我们需要定义答案结点和比较次数,注意返回条件:如果结点为空就返回;递归顺序:中序;我们需要对根这部分操作,比较次数原创 2021-04-07 10:11:49 · 103 阅读 · 0 评论 -
NC17_最长回文子串
NC17_最长回文子串知识点:动态规划题目链接题目描述对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。输入: “abc1234321ab”,12输出: 7解题思路令dp[i][j]表示A[i]至A[j]所表示的子串是否是回文子串若A[i] = A[j],那么只要A[i+1]和A[j-1]是回文子串,A[i+1]至A[j-1]就是回文子串;若A[i] != A[j],那A[i]至A[j]一定不是回文子串。转移方程为原创 2021-03-17 19:11:14 · 671 阅读 · 0 评论 -
JZ57_二叉树的下一个结点
JZ57_二叉树的下一个结点知识点:二叉树题目链接题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。输入: {1,2,3,3,4,4,5}输出: {1,2,5}解题思路情况1 情况1 情况3 情况2 2 3 1 1 \ \ / / x原创 2021-03-17 10:47:40 · 109 阅读 · 0 评论 -
MySQL 牛客的课程订单分析
79、81、83重点看77. 请你写出一个sql语句查询在2025-10-15以后状态为购买成功的C++课程或者Java课程或者Python的订单,并且按照order_info的id升序排序:select * from order_infowhere datediff(date,"2025-10-15")>0 and status = "completed" and (product_name = 'C++' or product_name = 'Java' or product原创 2021-03-16 23:20:56 · 691 阅读 · 0 评论 -
NC48_在转动过的有序数组中寻找目标值
NC48_在转动过的有序数组中寻找目标值知识点:二分法题目链接题目描述给出一个转动过的有序数组,你事先不知道该数组转动了多少(例如,0 1 2 4 5 6 7可能变为4 5 6 7 0 1 2).在数组中搜索给出的目标值,如果能在数组中找到,返回它的索引,否则返回-1。假设数组中不存在重复项。示例1[3,2,1],1输出2解题思路和JZ4_旋转数组的最小数字类似运用到 数组有序这个特点 采用二分法如果找到了 就返回下标 由于是有序数组旋转而来要么left 到 mid 有序原创 2021-03-16 17:53:19 · 239 阅读 · 0 评论 -
JZ56_删除链表中重复的结点
JZ56_删除链表中重复的结点知识点:链表题目链接题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5输入: {1,2,3,3,4,4,5}输出: {1,2,5}解题思路直接取出链表中的结点 然后去重再组成链表比较简单在原来的基础上修改 pre指针指向当前已经确定的不重复的结点 cur一直往后遍历 如果重复的跳过原创 2021-03-16 15:58:55 · 146 阅读 · 0 评论 -
JZ52_正则表达式匹配
JZ52_正则表达式匹配知识点:字符串、基础范围题目链接题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。输入: “aaa”,“a*a”输出: true解题思路采用递归的方法返回的条件是 如果str和pattern同时走到底 说明匹配成功 若pattern先到底 str没到底 那么匹配不原创 2021-03-15 12:48:07 · 171 阅读 · 0 评论 -
JZ49_把字符串转换成整数
JZ49_把字符串转换成整数知识点:字符串、基础范围题目链接题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空返回值描述:如果是合法的数值表达则返回该数字,否则返回0输入: “+2147483647”输出: 2147483647解题思路int的范围是 [231 -1 , -231]首先判断这个数的正负,如果正数,超过了INT_MAX,就设置为INT_MAX如果原创 2021-03-15 10:52:55 · 99 阅读 · 0 评论 -
NC51_合并k个已排序的链表
NC51_合并k个已排序的链表知识点:归并、最小堆题目链接题目描述合并 k 个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。输入: [{1,2,3},{4,5,6,7}]输出: {1,2,3,4,5,6,7}解题思路归并排序 注意返回值最小堆,注意在合并的时候 需要把链表的下一个结点也放进去代码#include "cheader.h"struct ListNode { int val; ListNode *next; ListNode(i原创 2021-03-15 10:22:30 · 379 阅读 · 0 评论 -
JZ48_不用加减乘除做加法
JZ48_不用加减乘除做加法知识点:异或、与、位运算题目链接题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。输入: 1,2输出: 3解题思路这里用到异或运算和 与运算 和 左移举例 当 二进制101 和 111相加时101 ^ 111 = 010 (没有处理进位的加法)(101 & 111) << 1 = 101 << 1 = 1010 (此处得到哪一位需要加上进位,为1的地方表示有进位需要加上) 0010原创 2021-03-12 13:50:09 · 176 阅读 · 0 评论 -
JZ46_孩子们的游戏
JZ46_孩子们的游戏知识点:约瑟夫环题目链接题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏原创 2021-03-12 12:13:10 · 177 阅读 · 0 评论 -
JZ41_和为S的连续正数序列
JZ41_和为S的连续正数序列知识点:滑动窗口题目链接题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!返回值描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大原创 2021-03-11 18:26:07 · 113 阅读 · 0 评论 -
JZ40_数组中只出现一次的数字
JZ40_数组中只出现一次的数字知识点:哈希表、位运算题目链接题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。输入: [1,4,1,6]输出: [4,6]解题思路用哈希表存每个数字 和 对应的次数 然后找到次数等于1的数字用位运算 我们知道 1^1 =0 0^0=0 1^0=1 如果两个相同的数 异或则为0所以所有的数异或 得到的结果是 那两个只出现一次数 异或的结果知道异或结果中 第一次出现1的位置 我们就能分开这个数 然后去原创 2021-03-11 16:21:45 · 129 阅读 · 0 评论 -
Z36_两个链表的第一个公共节点
Z36_两个链表的第一个公共节点知识点:链表、双指针题目链接题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)解题思路理解题目的意思pHead1 1->2->4->10->3->nullpHead2 3->10->3第一个公共节点是10可以把这些点放入哈希表中 再去找用两个指针分别遍历 两个链表 两个链表再处理一下 pHead1 = pHead1 + pH原创 2021-03-10 13:22:46 · 118 阅读 · 0 评论 -
NC102_在二叉树中找到两个节点的最近公共祖先
NC102_在二叉树中找到两个节点的最近公共祖先知识点:二叉树、递归题目链接题目描述给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。示例1输入: [3,5,1,6,2,0,8,#,#,7,4],5,1输出: 3解题思路这里需要用到递归 递归查询两个给定的结点o1 和 o2如果当前节点 是空的 则返回 如果是o1 或者 o2 也返回本身类似于后序遍历 往左边去找 往右边去找如果左边和右边 都不存在 要找的节点返回-1如果左边有原创 2021-03-10 11:00:20 · 424 阅读 · 0 评论 -
NC127_最长公共子串
NC127_最长公共子串知识点:动态规划、二维数组题目链接题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。示例1输入: “1AB2345CD”,“12345EF”输出: “2345”解题思路定义动态规划数组dp注意状态转移方程 如果 str1[i] == str[j] 则dp[i][j] = dp[i-1][j-1]+1 否则 dp[i][j] = 0由于dp[-1][-1] 不存在 我们i和j从1开始 比原创 2021-03-10 10:36:55 · 150 阅读 · 0 评论 -
JZ34_数组中的逆序对
JZ34_数组中的逆序对知识点:归并排序题目链接题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字示例1输入: {1,2,3,4,5,6,7,0}输出: 7解题思路这里采用归并的思想 首先要知道归并的框架 类似于树的后序遍历 先递归进行左子树 和 右子树 然后左右子树变成有序me原创 2021-03-09 14:57:39 · 184 阅读 · 0 评论 -
JZ33_丑数
JZ33_丑数知识点:动态规划、数组题目链接题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。示例1输入: 7输出: 8解题思路根据定义我们可以知道什么是丑数num = 2x x 3y x 5z丑数可以由 一个丑数乘以2或者乘以3或者乘以5得到从1开始 得到 2,3,5 ;再从2,3,5开始 得到4,6,10,6,9,15,10,15,25原创 2021-03-09 14:09:20 · 167 阅读 · 0 评论 -
JZ32_把数组排成最小的数
JZ32_把数组排成最小的数知识点:自定义函数 string题目链接题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。示例1输入:[3,32,321]输出: “321323”解题思路to_string 函数可以把int类型转为string类型这里定义一个比较函数 对 string类型的数据排序 希望越小越好 a+b < b+a再把他们放回来 组原创 2021-03-09 12:59:06 · 168 阅读 · 0 评论 -
NC53_删除链表的倒数第n个节点
NC53_删除链表的倒数第n个节点知识点:链表题目链接题目描述给定一个链表,删除链表的倒数第n个节点并返回链表的头指针例如,给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1->2->3->5.备注:题目保证n一定是有效的请给出请给出时间复杂度为O(n)的算法示例1输入:{1,2},2输出: 2解题思路如何定位到倒数第n个结点比较简单 可以采用快慢指针 快指针先跑但是这里需要删除 我们要原创 2021-03-09 12:46:35 · 244 阅读 · 0 评论 -
NC50_链表中的结点每k个一组翻转
NC50_链表中的结点每k个一组翻转知识点:链表题目链接题目描述将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。要求空间复杂度O(1)例如:给定的链表是1→2→3→4→5对于 k=2, 你应该返回=2→1→4→3→5对于 k=3, 你应该返回=3→2→1→4→5示例1输入:{1,2,3,4,5},2输出:{2,1,4,3,5}解题思路方法一:定义一个哨兵结点 插入链原创 2021-03-09 11:58:52 · 243 阅读 · 0 评论 -
JZ31_整数中1出现的次数(从1到n整数中1出现的次数
JZ31_整数中1出现的次数(从1到n整数中1出现的次数知识点:找规律题目链接题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。示例1输入: 13返回值: 6解题思路用high表示高位,cur表示当前位,low表示低位,di原创 2021-03-08 15:47:49 · 182 阅读 · 0 评论 -
JZ27_字符串的排列
JZ24_字符串的排列知识点:递归、全排列题目链接题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。示例1输入:“ab”返回值: [“ab”,“ba”]解题思路方法一 :每次找下一个全排列和Leetcode刷题笔记 31. 下一个排列一样的思路首先从尾向头找 str[i] &原创 2021-03-08 13:48:35 · 221 阅读 · 0 评论 -
ZJ26_二叉搜索树与双向链表
ZJ26_二叉搜索树与双向链表知识点:二叉树、链表、分治题目链接题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路采用中序遍历 把结点都放入一个数组中保存 然后再把他们连起来不用数组 用一个pre结点保存前一个结点 直接在中序遍历 把他们连起来代码#include "cheader.h" struct TreeNode { int val; struct TreeNode *left;原创 2021-03-07 12:10:21 · 129 阅读 · 0 评论 -
JZ25_复杂链表的复制
JZ25_复杂链表的复制知识点:链表题目链接题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空解题思路复制next 如原来是A->B->C->D 变成A->A’->B->B’->C->C’->D->D’复制random 添加random指针 若原原创 2021-03-07 10:48:33 · 172 阅读 · 0 评论 -
JZ24_二叉树中和为某一值的路径
JZ24_二叉树中和为某一值的路径知识点:二叉树题目链接题目描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。示例1输入: {10,5,12,4,7},22返回值: [[10,5,7],[10,12]]示例2输入: {10,5,12,4,7},15返回值: [ ]解题思路解决这道题 我们要知道如何遍历所有从根到叶子结点的路径第一 传入的参数 和 返回值 传入最后结果数原创 2021-03-07 10:12:47 · 145 阅读 · 0 评论 -
JZ23_二叉树的后序遍历
JZ23_二叉树的后序遍历知识点:二叉树题目链接题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。示例1输入:[4,8,6,12,16,14,10]返回值: true解题思路首先我们明白 后序遍历是 左 右 根后序遍历的结果 最后的一定是根 这样我们就可以找到左右子树我们采用递归的方式 明确三点第一 递归的参数 我们需要知道数组是什么 数组的哪些范围内 需要我们判断第二 返回的原创 2021-03-06 23:08:42 · 121 阅读 · 0 评论 -
JZ21_栈的压入、弹出序列
JZ21_栈的压入、弹出序列知识点:栈题目链接题目描述操作给定的二叉树,将其变换为源二叉树的镜像。示例1输入:[1,2,3,4,5],[4,3,5,1,2]返回值: false解题思路看起来比较简单 但是实际做的时候没啥思路首先定义两个指针i,j 分别指向 push 和 pop移动指针,如果指针i和j对应的数不一样,就把i对应的压入栈,如果一样,说明这个数可以直接放进弹出,两个指针都++,然后判断pop顺序中的数,有可能来自栈中元素的弹出,也可能来自下个放入,所以这里尽可能的匹配原创 2021-03-06 16:32:02 · 138 阅读 · 0 评论 -
JZ18_二叉树的镜像
JZ18_二叉树的镜像 知识点:二叉树题目链接题目描述操作给定的二叉树,将其变换为源二叉树的镜像。比如: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5示例1输入:原创 2021-03-05 23:13:09 · 1326 阅读 · 0 评论 -
JZ17_树的子结构
JZ17_树的子结构 知识点:二叉树题目链接题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)示例1输入: {8,8,#,9,#,2,#,5},{8,9,#,2}返回值: true解题思路这是由两个小问题组成的一道题首先我们要判断一棵树是否和另一棵树有相同结构,这里需要用到递归递归中最重要的是返回条件:如果B为空 则返回true;如果A为空 B不为空 则返回false;如果A树的结点值 == B树的结点值,两个树左子树和右子树 递归进原创 2021-03-05 10:49:50 · 171 阅读 · 0 评论 -
JZ13_调整数组顺序使奇数位于偶数前面
JZ13_调整数组顺序使奇数位于偶数前面.知识点:冒泡排序题目链接题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例1输入: [1,2,3,4]返回值: [1,3,2,4]解题思路再开辟一个数组的解法就不写了这里用到冒泡排序的思想,如果前面一个是偶数 后面一个是奇数,两者交换位置 ,不断交换 使偶数在最后面代码#include "cheader.h"原创 2021-03-04 13:51:15 · 140 阅读 · 1 评论 -
JZ12_数值的整数次方
JZ12_数值的整数次方 知识点:快速幂、递归题目链接题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0示例1输入: 2,3返回值: 8.0000解题思路使用快速幂 x4 = x2 * x2 可以用递归的方法进行运算 返回条件:任何数的0次都是1非递归的快速幂 x6 6的二进制是110 x不断乘2 对应二进制是1的时候就乘 x代码#include "cheader.原创 2021-03-04 13:04:10 · 137 阅读 · 1 评论 -
JZ11_二进制中1的个数
JZ11_二进制中1的个数 知识点:补码、位运算题目链接题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入: 10返回值: 2解题思路我们需要注意的是 整数包括负数 负数在计算机中是以补码的形式存储的正数的正码、反码和补码都相同负数的补码 = 负数的反码 +18位的二进制 表示-1 是 1111 1111 因为 1的反码为1111 1110 再加一 是1111 1111注意左移,存在循环左移,负数往右移前面添1所以这道题可以用一个正的0x0原创 2021-03-04 12:33:05 · 137 阅读 · 1 评论 -
NC119最小的k个数 三种解法 排序、堆、快排加二分法
NC119最小的k个数知识点:排序题目链接题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4示例1输入:[4,5,1,6,2,7,3,8],4返回值:[1,2,3,4]解题思路直接使用快排 对整个数组排序使用优先队列,如果队列中的数据小于K就往里放,否则和队列中的头部(也就是最大的那个)比较,哪个小就放入队列中,最后队列中的元素弹出就是答案利用快排的思想 快排一次 能够使基准前面的数 都小于基准 后面的都大于原创 2021-03-03 12:19:40 · 251 阅读 · 0 评论 -
NC105_二分查找
NC105_二分查找知识点:二分查找题目链接题目描述请实现有重复数字的升序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数(指不存在大于等于查找值的数),则输出数组长度加一。输入:5,4,[1,2,4,4,5]输出:3备注:输出位置从1开始计算解题思路找到什么样的一定不是结果 如果比v小 一定不是结果 left = mid+1如果大于等于v 因为存在重复数字 所以还是要往左边找代码#include "cheader.h"class Sol原创 2021-03-02 11:00:54 · 178 阅读 · 0 评论 -
NC45_实现二叉树先序、中序和后序遍历 递归和非递归版
NC45_实现二叉树先序、中序和后序遍历知识点:二叉树、递归、stack题目链接题目描述分别按照二叉树先序,中序和后序打印所有的节点。输入:{1,2,3}输出:[[1,2,3],[2,1,3],[2,3,1]]备注:n≤106解题思路先序迭代版本调用stack一边放入答案数组 一边放到stack中 一直向左tmp = tmp->right 到右子树中序迭代版本:调用stack左边有节点的话 一直放到stack中 一直向左取出stack的头节点tmp,放入答案原创 2021-03-02 10:29:15 · 462 阅读 · 0 评论