刷题
文章平均质量分 58
满眼*星辰
一名努力学习编程的大三学生
展开
-
寻找第K大 —— 快排思想 / 堆排思想
NC88 寻找第K大描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(1<=K<=n),请返回第K大的数(包括重复的元素,不用去重),保证答案存在。示例1输入:[1,3,5,2,2],5,3复制返回值:2复制示例2输入:[10,10,9,9,8,7,5,6,4,3,4,2],12,3复制返回值:9复制说明:去重后的第3大是8,但本题要求包含重复的元素,不用去重,所以输出9题目链接:htt原创 2021-08-06 16:20:00 · 340 阅读 · 0 评论 -
求正数数组的最小不可组成和 --- 背包问题(动态规划)
目录求正数数组的最小不可组成和题目解题思路代码实现求正数数组的最小不可组成和题目给定一个全是正数的数组arr,定义一下arr的最小不可组成和的概念: 1,arr的所有非空子集中,把每个子集内的所有元素加起来会出现很多的值,其中最小的记为min,最大的记为max; 2,在区间[min,max]上,如果有一些正数不可以被arr某一个子集相加得到,那么这些正数中最小的那个,就是arr的最小不可组成和; 3,在区间[min,max]上,如果所有的数都可以被arr的某一个子集相加得到,那么max+1是arr的原创 2021-06-02 20:48:00 · 233 阅读 · 0 评论 -
斐波那契凤尾 --- 遇到的坑
斐波那契凤尾斐波那契凤尾坑1解决坑1坑2解决坑2完整代码斐波那契凤尾NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后6位。输入描述:输入有多组数据。每组数据一行,包含一个整数n (1≤n≤100000)。输出描述:对应每一组输入,输出第n个斐波那契数的最后6位。示例1输入1234100000输出1235537501原创 2021-05-25 16:37:18 · 217 阅读 · 0 评论 -
因子个数 --- 递归法 / 遍历法
因子个数一个正整数可以分解成一个或多个数组的积。例如36=223*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。输入描述:输入包括多组数据。每组数据仅有一个整数n (2≤n≤100000)。输出描述:对应每个整数,输出其因子个数,每个结果占一行。示例1输入302620输出322链接:https://www.nowcoder.com/questionTerminal/e8fb8f89f5d14原创 2021-05-22 15:01:00 · 497 阅读 · 0 评论 -
计算字符串的距离 --- 动态规划
计算字符串的距离计算字符串的距离解题思路代码实现计算字符串的距离【计算字符串的距离】Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。Ex:字符串A:abcdefg字符串B: abcdef通过增加或是删掉字符”g”的方式达到目的。这两种方案都需要一次操原创 2021-05-20 18:54:43 · 799 阅读 · 0 评论 -
迷宫问题 --- 回溯法
迷宫问题定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。入口点为[0,0],既第一空格是可以走的路。本题含有多组数据。原创 2021-05-15 20:20:21 · 371 阅读 · 0 评论 -
字符串通配符 --- 回溯法
字符串通配符问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。要求:实现如下2个通配符::匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)?:匹配1个字符输入:通配符表达式;一组字符串。输出:返回匹配的结果,正确输出true,错误输出false本题含有多组样例输入!输入描述:先输入一个带有通配符的字符串,再输入一个需要匹配的字符串输出描述:返回匹配的结果,正确输出true,错误输原创 2021-05-12 18:18:43 · 173 阅读 · 0 评论 -
幸运的袋子 --- 回溯法
一个袋子里面有n个球,每个球上面都有一个号码(拥有相同号码的球是无区别的)。如果一个袋子是幸运的当且仅当所有球的号码的和大于所有球的号码的积。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3你可以适当从袋子里移除一些球(可以移除0个,但是别移除完),要使移除后的袋子是幸运的。现在让你编程计算一下你可以获得的多少种不同的幸运的袋子。输入描述:第一行输入一个正整数n(n ≤ 1000)第二行为n个数正整数.原创 2021-05-12 17:35:32 · 573 阅读 · 0 评论 -
跳石板---动态规划 / 广度优先遍历
跳石板小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6->8->12->18->24于是小易最少需要跳跃5次,就可以从4号石板跳到24号石板输入原创 2021-05-11 17:43:53 · 215 阅读 · 0 评论 -
总结所有有关二叉树公共祖先问题
二叉树公共祖先满二叉树最近公共祖先思路代码二叉搜索树的最近公共祖先思路代码-遍历代码-递归二叉树的最近公共祖先思路代码-递归满二叉树最近公共祖先将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。测试样例:2,3返回:1链接:https://www.nowcoder.com/questionTerminal/70e00e490b454006976c1fdf47f155d9原创 2021-05-06 11:20:02 · 800 阅读 · 1 评论 -
剑指 Offer 60. n个骰子的点数 --- 动态规划
剑指 Offer 60. n个骰子的点数剑指 Offer 60. n个骰子的点数把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]示例 2:输入: 2输出: [0.02778,0.05556,0.08333,0原创 2021-05-02 18:06:30 · 113 阅读 · 0 评论 -
寻找时间黑客在线编程大赛复赛 --- 手套 (贪心)
手套[编程题]手套热度指数:2354时间限制:C/C++ 3秒,其他语言6秒空间限制:C/C++ 32M,其他语言64M算法知识视频讲解在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。给定颜色种数n(1≤n≤13),同时给原创 2021-04-28 14:48:56 · 172 阅读 · 0 评论 -
最大队列,最小栈解决思路
最大队列,最小栈最大队列思路代码最小栈思路代码最大队列请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”][[],[1],[2],[],[],[]]原创 2021-04-26 13:19:05 · 113 阅读 · 0 评论 -
剑指 Offer 47. 礼物的最大价值 --- 回溯and动规
剑指 Offer 47. 礼物的最大价值在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物提示:0 < grid.length <= 2000原创 2021-04-21 20:52:46 · 124 阅读 · 0 评论 -
剑指 Offer 49. 丑数 --- 动态规划(三指针法)
剑指 Offer 49. 丑数我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。解题思路:丑数的递推性质: 丑数只包含因子 2, 3, 5 因此有 “丑数 = 某较小丑数× 某因子” (例如:10 =5×2)。作者:jyd链接:https://leet原创 2021-04-21 17:02:40 · 81 阅读 · 0 评论 -
剑指 Offer 50. 第一个只出现一次的字符
剑指 Offer 50. 第一个只出现一次的字符在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = “abaccdeff”返回 “b”s = “”返回 " "来源:力扣(LeetCode)链接:点击跳转https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof1. LinkedHashMap保证了有序性 //linkedhashmap原创 2021-04-14 16:53:16 · 61 阅读 · 0 评论 -
剑指 Offer 46. 把数字翻译成字符串---树结构递归,动态规划
剑指 Offer 46. 把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”来源:力扣(LeetCode)链接:点击跳转https://leetc原创 2021-04-05 17:44:04 · 75 阅读 · 0 评论 -
剑指 Offer 44. 数字序列中某一位的数字
剑指 Offer 44. 数字序列中某一位的数字数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。示例 1:输入:n = 3输出:3示例 2:输入:n = 11输出:0来源:力扣(LeetCode)链接:点击跳转https://leetcode-cn.com/problems/shu-zi-xu-lie-zhong-mou-yi-wei-d原创 2021-04-03 12:42:10 · 53 阅读 · 0 评论 -
一道题让你掌握5中思路:暴力+动态规划+贪心+分治
剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)链接:点击跳转https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof暴力求解1原创 2021-04-02 23:02:45 · 117 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列---回溯+剪枝
剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。来源:力扣(LeetCode)链接:点击跳转题目https://leetcode-cn.com/problems/zi-fu-chua原创 2021-03-31 23:06:09 · 105 阅读 · 0 评论 -
单链表的13道面试题详解(含力扣牛客链接)
单链表题1、移除链表元素2、反转链表3、链表的中间结点4、链表中倒数第k个结点5、合并两个有序链表7、删除链表中重复的结点8、链表的回文结构9、相交链表10、环形链表11、环形链表 II12、删除中间节点13、旋转链表1、移除链表元素点我跳转题目链接class Solution { public ListNode removeElements(ListNode head, int val) { if (head == null) return null; Lis原创 2021-02-18 14:37:35 · 359 阅读 · 2 评论 -
二叉树8道基础面试题(含力扣链接)
二叉树基础面试题1.二叉树的前序遍历2.二叉树的中序遍历3.二叉树的后序遍历4.相同的树5.另一个树的子树6.二叉树的最大深度7.平衡二叉树8.对称二叉树1.二叉树的前序遍历力扣链接/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * Tree原创 2021-03-27 21:05:37 · 287 阅读 · 0 评论 -
剑指 Offer 31. 栈的压入、弹出序列---模拟
剑指 Offer 31. 栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), pu原创 2021-03-25 20:33:09 · 62 阅读 · 0 评论 -
剑指 Offer 29. 顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)链接:点击跳转https://leetcode-cn.com/prob原创 2021-03-25 18:08:01 · 59 阅读 · 0 评论 -
剑指 Offer 26. 树的子结构---递归
题目输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:给定的树 B:返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:true来源:力扣(LeetCode)链接:点击跳转https://leetcode-c原创 2021-03-23 20:09:12 · 93 阅读 · 0 评论 -
剑指 Offer 20. 表示数值的字符串
表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。来源:力扣(LeetCode)链接:点击跳转https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof思路:这就是一道考测试用例的题,一次不可能写成原创 2021-03-20 10:01:54 · 61 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子——动态规划and贪心
剪绳子给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4原创 2021-03-19 16:16:10 · 107 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围——广度优先遍历BFS
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3, n原创 2021-03-15 15:52:42 · 100 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径——回溯法DFS
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格原创 2021-03-14 20:04:18 · 88 阅读 · 1 评论