随笔分类 -  算法

牛客网算法
摘要:JZ85 连续子数组的最大和(二) 题目 输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,找到一个具有最大和的连续子数组。 1.子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组 2.如果存在多个最大和的连 阅读全文
posted @ 2023-01-06 16:00 loongnuts 阅读(70) 评论(0) 推荐(0) 编辑
摘要:JZ84 二叉树中和为某一值的路径(三) 题目 给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum 。 1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点 2.总节点数目为n 3.保证最后返回的路径个数在整形范围内(即 阅读全文
posted @ 2023-01-05 14:52 loongnuts 阅读(132) 评论(0) 推荐(0) 编辑
摘要:JZ78 把二叉树打印成多行 题目 给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行, 将输出的结果存放到一个二维数组中返回。 例如:给定的二叉树是{1,2,3,#,#,4,5} [ [1], [2,3], [4,5] ] 方法 非递归层 阅读全文
posted @ 2023-01-03 15:01 loongnuts 阅读(52) 评论(0) 推荐(0) 编辑
摘要:JZ76 删除链表中重复的结点 题目 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 例如,给定的二叉树是{1,2,3,#,#,4,5} 该二叉树之字形层序遍历的结果是 [ [1], [3,2], [4,5] ] 方法 非递归层次遍历 思路 算法实现 阅读全文
posted @ 2023-01-02 16:14 loongnuts 阅读(67) 评论(0) 推荐(0) 编辑
摘要:JZ76 删除链表中重复的结点 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5 方法1 哈希表进行删除 思路 算法实现 LinkedHashMap实现顺序插入,不过查 阅读全文
posted @ 2023-01-01 19:12 loongnuts 阅读(149) 评论(0) 推荐(0) 编辑
摘要:JZ75 字符流中第一个不重复的字符 题目 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 "go" 时,第一个只出现一次的字符是 "g"。 当从该字符流中读出前六个字符 “google" 时,第一个只出现一次的字符是"l"。 方法1 使用LinkedHas 阅读全文
posted @ 2022-12-31 14:37 loongnuts 阅读(82) 评论(0) 推荐(0) 编辑
摘要:JZ74 和为S的连续正数序列 题目 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。 但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。 没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。 阅读全文
posted @ 2022-12-30 11:56 loongnuts 阅读(66) 评论(0) 推荐(0) 编辑
摘要:JZ70 矩形覆盖 题目 我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,从同一个方向看总共有多少种不同的方法? 数据范围:0≤n≤38 进阶:空间复杂度 O(1) ,时间复杂度 O(n) 注意:约定 n == 0 时,输 阅读全文
posted @ 2022-12-29 14:40 loongnuts 阅读(80) 评论(0) 推荐(0) 编辑
摘要:JZ67 把字符串转换成整数(atoi) 题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。传入的字符串可能有以下部分组成: 1.若干空格 2.(可选)一个符号字符('+' 或 '-') 3. 数字,字母,符号,空格组成的字符串表达式 4. 阅读全文
posted @ 2022-12-29 14:36 loongnuts 阅读(208) 评论(0) 推荐(0) 编辑
摘要:JZ64 求1+2+3+...+n 题目 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 方法 位运算 思路 算法实现 从1连加到n,不能使用城乘除法,那就只能相加了。一个一个加,但是循环需要判断什么时候 阅读全文
posted @ 2022-12-28 15:32 loongnuts 阅读(354) 评论(0) 推荐(0) 编辑
摘要:JZ62 孩子们的游戏(圆圈中最后剩下的数) 题目 每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。 其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。 然后,随机指定一个数m,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出 阅读全文
posted @ 2022-12-27 11:41 loongnuts 阅读(62) 评论(0) 推荐(0) 编辑
摘要:JZ58 左旋转字符串 题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。 对于一个给定的字符序列 S ,请你把其循环左移 K 位后的序列输出。 例如,字符序列 S = ”abcXYZdef” , 要求输出循环左移 3 位后的结果,即 “X 阅读全文
posted @ 2022-12-26 11:03 loongnuts 阅读(55) 评论(0) 推荐(0) 编辑
摘要:JZ57 和为S的两个数字 题目 输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。 方法1 暴力解题 思路 算法实现 两次循环,两个值相加与sum进行比较,为true直接br 阅读全文
posted @ 2022-12-25 11:03 loongnuts 阅读(93) 评论(0) 推荐(0) 编辑
摘要:JZ56 数组中只出现一次的两个数字 题目 一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字 思路 算法实现 既然有两个数字只出现了一次,我们就统计每个数字的出现次数,利用哈希表的快速根据key值访问其频率值。 具体做法: step 1:遍历数组,用哈 阅读全文
posted @ 2022-12-24 14:30 loongnuts 阅读(59) 评论(0) 推荐(0) 编辑
摘要:JZ54二叉搜索树的第k个节点 题目 给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值。 返回第k小的节点值即可 不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-1 保证n个节点的值不一样 思路 算法实现 根据二叉搜索树的性质,左子树的元素都小于根节 阅读全文
posted @ 2022-12-23 10:03 loongnuts 阅读(65) 评论(0) 推荐(0) 编辑
摘要:JZ51 数组中的逆序对 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 方法1:暴力 思路 算法实现 两个for循环,如果前面的 阅读全文
posted @ 2022-12-22 15:55 loongnuts 阅读(59) 评论(0) 推荐(0) 编辑
摘要:JZ49 丑数 题目 我们先看到题目,把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。 方法1:质因数分解(暴力) 思路 算法实现 一个很朴素的做法 从1~n每次+1,一直枚举,直到找到地N个丑数为 阅读全文
posted @ 2022-12-21 10:16 loongnuts 阅读(67) 评论(0) 推荐(0) 编辑
摘要:JZ48 最长不含重复字符的子字符串 描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例1 输入:"abcabcbb" 返回值:3 说明:因为无重复字符的最长子串是"abc",所以其长度为 3。 方法1 思路 维护一个数组,想里面添加元素,直至出现第一个重复元 阅读全文
posted @ 2022-12-20 14:36 loongnuts 阅读(91) 评论(0) 推荐(0) 编辑
摘要:JZ47 礼物的最大价值 描述 描述 在一个m\times nm×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 如 阅读全文
posted @ 2022-12-19 10:17 loongnuts 阅读(55) 评论(0) 推荐(0) 编辑
摘要:JZ46 把数字翻译成字符串 描述 有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。 现在给一串数字,返回有多少种可能的译码结果 示例1 输入: "12" 返回值:2 说明: 2种可能的译码结果(”ab” 或”l”) 思路 思路: 对于普通数组1-9,译码方 阅读全文
posted @ 2022-12-17 10:28 loongnuts 阅读(271) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示