普通网友
这个作者很懒,什么都没留下…
展开
-
华为OD面试手撕代码:安排工作以达到最大收益
具体: 1、先把工作难度数组和工作收益数组合并为jobs 2、再对jobs进行升序排序,对工人数组也进行升序排序 3、While循环作用是找到能匹配工作难度的工人 4、如果没有能胜任的工人就直接退出 5、如果有胜任的工人j,为了能使获取到最大的收益所以,先把以前算的每个人的收益减掉后, 再加上当前最大的收益,就是最后的结果*/题目:安排工作以达到最大收益。原创 2024-06-17 10:29:05 · 306 阅读 · 1 评论 -
华为OD面试手撕代码:跳跃游戏|||
判断是否能到达目标位置。如果任意一个方向可以到达,则返回。、接下来记录当前位置的值,并将该位置标记为已访问(改成。、使用递归方式,分别从当前位置向前和向后进行跳跃,、首先判断当前位置是否越界或者已经被访问过。从给定的位置开始向前或者向后找,能不能。所有就从当前的位置开始递归向前向后找。,如果可以返回真,否则返回假。使用深度优先搜索算法实现。、然后判断当前位置的值是否为。只有向前向后任意一个遇到。如果都无法到达,并返回。原创 2024-06-13 09:30:03 · 280 阅读 · 0 评论 -
华为OD面试手撕代码:早餐组合
最后将下标位置返回,并累加就是组合的结果。排序可以帮助我们更有效地使用二分查找。这是因为在求解满足条件的组合数时,的最大索引位置,它的返回值是。,确保结果在取模后不会溢出,数组中的所有元素,然后再。原创 2024-06-13 09:24:08 · 408 阅读 · 0 评论 -
华为OD面试手撕代码:找到最大周长的多边形
中可以构造的 多边形 的 最大周长。如果不能构造出任何多边形,请你返回。条边的封闭二维图形。多边形的 最长边 一定 小于 所有其他边长度之。中唯一可以构造的多边形为三角形,每条边的长度分别为。的多边形,因为其他边之和没法大于两者中的任何一个。解释:最大周长多边形为五边形,每条边的长度分别为。解释:无法构造任何多边形,因为多边形至少要有。一个多边形的 周长 指的是它所有边之和。条边的多边形,每条边的长度分别为。题目:找到最大周长的多边形。我们无法构造一个包含变长为。多边形 指的是一个至少有。原创 2024-06-12 09:39:04 · 136 阅读 · 0 评论 -
华为OD面试手撕代码:表达式加法和减法
小学一年级的时候做数学题很莫名奇妙,经常把算术表达式加上很多空格。是最后一个字符了,所以最后一个字符也可以进入到运算中。头大于是老师决定雇用你编写一个程序来独立计算。给你一个包含空格的字符串,请你计算出。输入输入只有一行,即一个长度不超过。中不一定包含运算符,且我们保证。),和下一次的数字,进行运算。思路:记录上次的符号(默认为。、先将每个数求出来,记录到。、记录下次的符号,并重置下。原创 2024-06-11 09:29:00 · 68 阅读 · 0 评论 -
华为OD面试手撕代码:Z字形变换
最后把字符串数组拼接到一起(成一个字符串)就是。步的时候,每次都把字符放到对应的字符串数组中。题目的含义就是让你把给定的字符串。、建立一个字符串的数组。,去保存每一行的字符。、当向下走的时候每次给。、当到最底下的时候给。原创 2024-06-11 09:25:51 · 126 阅读 · 0 评论 -
华为OD面试手撕代码:整数转罗马数字
罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规。开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其。开头,使用 减法形式,表示从以下符号中减去一个符号,例如。数组中的每个数值,对于每个数值,如果当前数值不小于。值,然后将其余部分转换为罗马数字。给定一个整数,将其转换为罗马数字。,分别存储罗马数字的数值和符号。用于存储转换后的罗马数字。对象的字符串形式作为结果。次,请使用 减法形式。因为转换是基于小数位。原创 2024-06-07 16:14:34 · 77 阅读 · 0 评论 -
华为OD面试手撕代码:子数组按位或操作
返回可能结果的数量。多次出现的结果在最终答案中仅计算一次。对于每个(连续的)子数组。有三个唯一值,所以答案是。我们有一个非负整数数组。原创 2024-06-07 09:33:27 · 236 阅读 · 0 评论 -
华为OD面试手撕代码:删除有序数组中的重复项
删除重复出现的元素,使得出现次数超过两次的元素。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。额外空间的条件下完成。原创 2024-06-07 09:30:36 · 138 阅读 · 0 评论 -
华为OD面试手撕代码:产生由1,2,3这3个数字符号所构成、长度为n的字符串
无相邻重复子串的所有字符串,每个字符串换行输出。串而言,都不会有相邻的、完全相同的子串;的字符串,并且在字符串中对于任何一个子。个数字符号所构成、长度为。原创 2024-06-06 09:19:05 · 217 阅读 · 0 评论 -
华为OD面试手撕代码:用户分组
每个人应该 恰好只 出现在 一个组 中,并且每个人必须在一个组中。如果有多个答案,返回其中 任何。这个题的意思就是:把数组中的每个元素都按照元素的值分到不同的组中。可以 保证 给定输入 至少有一个 有效的解。个人被分成数量未知的组。每个人都被标记为一个从。因为到这里分组满了 所以分组有一个。个人所在的组的大小。返回一个组列表,使每个人。然后把下表放入数组中返回。分组满了,所以有一个分组。其他可能的解决方案有。原创 2024-06-06 09:16:00 · 788 阅读 · 0 评论 -
华为OD面试手撕代码:OJ红绿砖
因为校方的目的是:每一块红色的方砖都至少在绿色方砖的左边(也就是每一个红的左边不能有绿的),如果不满足要求,则将该红色方砖重新喷涂为绿色方砖,并将。根据题目描述,我们需要计算重新喷涂的方砖的最少数量。在广场上有一排方砖是有颜色的,被涂上红色或者绿色,从左到右排列。砖都至少在绿色方砖的左边,我们可以采用贪心算法的思路来解决。),则判断该红色方砖是否满足要求,即其左边没有绿色方砖(用于记录重新喷涂的方砖的次数,初始值为。输出需要重新喷涂的方砖的最少数量。的值,即重新喷涂的方砖的最少数量。原创 2024-06-05 09:25:40 · 245 阅读 · 0 评论 -
华为OD面试手撕代码:. 小岛问题(翻转矩阵)
同时相邻的上、下、左、右,以及左上、左下、右上、右下。列的二维矩阵,矩阵中每个位置的数字取值为。按照上述规则示例中的矩阵只最少需要点击。请问,给定一个矩阵,最少需要点击几。输出一个整数,表示最少需要点击的次数。个方向上,因此点击一次即可。)进一步地,一个位置上的。现需要将矩阵中所有的。原创 2024-06-05 09:21:57 · 254 阅读 · 0 评论 -
华为OD面试手撕代码: 一亿以内的素数
题目描述Wite。原创 2024-06-04 10:45:47 · 215 阅读 · 1 评论 -
华为OD面试手撕代码:下一个更大元素
的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应。该循环地搜索它的下一个更大的数。的下一个最大的数需要循环搜索,结果也是。中每个元素的 下一个更大元素。找不到下一个更大的数;原创 2024-06-04 09:49:26 · 137 阅读 · 0 评论 -
华为OD面试手撕代码:盛最多水的容器
在此情况下,容器能够容纳水(表示为蓝色。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。解释:图中垂直线代表输入数组。说明:你不能倾斜容器。原创 2024-06-04 09:44:50 · 203 阅读 · 0 评论 -
华为OD最新面试手撕代码:编辑距离
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符。原创 2024-06-03 09:15:44 · 415 阅读 · 0 评论 -
华为OD最新面试手撕代码:组合总和
递归调用返回后,我们需要回溯,即将当前添加的元素移除,以尝试其他可能的组合。最终返回所有找到的组合。回溯算法是一种通过不断尝试可能的解决方案来解决问题的方法。在回溯函数中,我们首先检查是否达到了目标值,如果是,则将当前组合添加到结果列表中。定义一个回溯函数,该函数接收当前的组合、当前的索引以及剩余的目标值作为参数。的 所有 不同组合 ,并以列表形式返回。数组进行排序,这样可以在后续的递归过程中方便地剪枝。数组,对于每个元素,我们都尝试将其添加到当前组合中,并递归调用回溯函数以寻找下一个可能的组合。原创 2024-06-03 09:13:05 · 109 阅读 · 0 评论 -
华为OD面试手撕代码:仅执行一次字符串交换能否使两个字符串相等
如果对 其中一个字符串 执行 最多一次字符串交换 就可以使两个字符串相等,返回。一次 字符串交换 操作的步骤如下:选出某个字符串中的两个。解释:两个字符串已经相等,所以不需要进行字符串交换。下标(不必不同),并交换这两个下标所对应的字符。解释:一次字符串交换无法使两个字符串相等。中的第一个和最后一个字符可以得到。给你长度相等的两个字符串。仅由小写英文字母组成。原创 2024-05-31 15:44:23 · 135 阅读 · 0 评论 -
华为OD面试最新手撕代码:前K个高频单词
返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。创建一个优先队列(最小堆),按照单词出现的次数排序,如果出现次数相同,则按照字母顺序排序。中的单词及其出现次数映射,将单词添加到最小堆中,保持堆的大小为。创建一个结果列表,按相反顺序从最小堆中取出前。是出现次数最多的四个单词,出现次数依次为。遍历单词列表,统计每个单词的出现次数,更新。个出现次数最多的单词,添加到结果列表中。为出现次数最多的两个单词,均为。来存储单词及其出现的次数。个出现次数最多的单词。原创 2024-05-31 09:12:38 · 427 阅读 · 0 评论 -
华为OD面试手撕代码:被围绕的区域
给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。原创 2024-05-26 12:30:28 · 263 阅读 · 0 评论 -
华为OD面试手撕代码最新:最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。原创 2024-05-20 10:10:10 · 1496 阅读 · 0 评论 -
华为OD面试手撕代码:删除回文子序列
给你一个字符串 s,它仅由字母 'a' 和 'b' 组成。每一次删除操作都可以从 s 中删除一个回文 子序列,返回删除给定字符串中所有字符(字符串为空)的最小删除次数。「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。原创 2024-05-14 09:41:55 · 551 阅读 · 0 评论 -
华为OD面试手撕代码:括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。原创 2024-05-13 09:23:18 · 505 阅读 · 0 评论 -
华为OD机试算法D卷:数字涂色
为了让黑板报既美观又有学习意义,老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。疫情过后,希望小学终于又重新开学了,三年二班开学第一天的任务是将后面的黑板报重新制作。如果不能整除,则为其分配一个新的颜色。遍历整数列表,对于每个数,检查它是否能被已有颜色的最小值整除。统计颜色列表中不同颜色的数量,即为最少需要的颜色种数。首先,将输入的整数列表按照从小到大的顺序进行排序。初始化一个空的颜色列表,用于存储每个数对应的颜色。输出只有一个整数,为最少需要的颜色种数。输出最少需要的颜色种数。原创 2024-05-10 10:33:06 · 33 阅读 · 0 评论 -
华为OD面试手撕代码:括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。原创 2024-05-10 09:52:38 · 247 阅读 · 0 评论 -
华为OD手撕代码面试:合并两个有序链表
两个链表的节点数目范围是 [0, 50] -100 <= Node.val <= 100 l1 和 l2 均按 非递减顺序 排列。将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2024-05-09 16:38:28 · 196 阅读 · 0 评论 -
od机试题:拼写字符串
假如可以用chars中的字母拼写出words中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。输出词汇表words中你掌握的所有单词的个数。注意:每次拼写时,chars中的每个字母和万能字符都只能使用一次。输出一个整数,表示词汇表words中你掌握的单词个数。有一个字符串数组words和一个字符串chars。可以拼写字符串"cat"、"bt"和"hat"可以拼写字符串"hello"和"world"第1行输入数组words的个数,记为N。可以拼写字符串"apple"和"car"原创 2024-04-12 11:09:43 · 259 阅读 · 0 评论 -
od面试手撕代码:判断字符串
返回 true,因为 "applepenapple" 可以被分割为 "apple pen apple"。给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单。返回 true,因为 "rocksong" 可以被分割为 "rock song"。dict=["rock","song"].返回 false,因为无法将 "catsandog" 分割成词典中的单词序列。返回true,因为"rocksong"可以被分割成"rock song'"备注:词典中的词可重复使用。原创 2024-04-28 12:58:06 · 192 阅读 · 0 评论 -
OD面试手撕代码:有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。s 仅由括号 '()[]{}' 组成。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。原创 2024-04-26 09:46:02 · 198 阅读 · 0 评论 -
OD面试手撕代码:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。1、题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: “abcabcbb”输入: “pwwkew”输入: “bbbbb”原创 2024-04-25 10:30:44 · 27 阅读 · 0 评论 -
od面试手撕代码:背包问题
i号物品的重量和价值,给定一个正数bag,表示一个载重bag的袋子,装的物品不能超过这个重量 返回能。在这个问题中,给定一组物品,每个物品有对应的重量和价值,以及。你的实现基于递归的思路,通过穷举所有可能的选择来找到。不过,这个解决方案的效率可能不高,因为它会重复计算一些子问题,导致时间复杂度较高。如果你想要继续使用递归解决这个问题,可以尝试对递归函数进行记忆化搜索,以减少重复计算,提高效率。一个背包的容量,任务是找到能装入背包的物品的最大总价值。探索所有可能的选择,最终返回背包能够容纳的最大总价值。原创 2024-04-23 09:14:37 · 28 阅读 · 0 评论 -
od面试手撕代码:芯片交易买入卖出
数组 prices 记录了某芯片近期的交易价格,其中 prices[i] 表示的 i 天该芯片的价格。你只能选择 某一天 买入芯片,并选择在 未来的某一个不同的日子 卖出该芯片。请设计一个算法计算并返回你从这笔交易中能获取的最大利润。如果你不能获取任何利润,返回 0。题目:芯片交易买入卖出。原创 2024-04-22 09:41:42 · 130 阅读 · 0 评论 -
od面试手撕代码:2012伦敦奥运会即将到来,大家都非常关注奖牌榜的情况,现在我们假设奖牌榜的排名规则如下:
然后接下来的N行,每行包含一个字符串Namei表示每个国家的名称,和三个整数Gi、Si、Bi表示每个获得的gold medal、silver medal、bronze medal的数量,以空格隔开,如(China 51 20 21),具体见样例输入。输出奖牌榜的依次顺序,只输出国家名称,各占一行,具体见样例输出。4、若以上三个条件仍无法区分名次,则以国家名称的字典序排定。第一行输入一个整数N(0<N<21),代表国家数量;1、首先gold medal数量多的排在前面;原创 2024-04-22 09:39:21 · 245 阅读 · 0 评论 -
od面试手撕代码:组合总和
题目组合总和给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1输入:输出:解释:2 和 3 可以形成一组候选,2 +原创 2024-04-21 08:53:50 · 39 阅读 · 0 评论 -
od面试手撕代码:Write a program which reads an integer n and prints the number of prime numbers
/ 遍历从2到n的每一个数,通过调用isPrime方法判断是否为素数,若是,则计数器递增。// 通过遍历2到num平方根的数来判断是否有能整除num的数,如果有,则num不是素数。// 素数定义为大于1的自然数中,除了1和它自身外,不能被其他自然数整除的数。// 使用Scanner从标准输入读取待判断范围的起始数n。否则返回false。对于每个遍历到的数,调用一个函数来判断它是否为素数。创建一个计数器,用于统计素数的数量,初始化为0。输出计数器的值,即为小于或等于n的素数的数量。// 初始化素数计数器。原创 2024-04-21 08:52:37 · 52 阅读 · 0 评论 -
od面试手撕代码:最长回文子串
/ 输出:"bab"// 以当前字符为中心,向两边扩展。找到最长回文子串的一种常见方法是以每个字符为中心,向两边扩展,同时考虑奇数长度和偶数长度的回文子。对于偶数长度的回文子串,以当前字符和下一个字符的中间为中心,向左右两边扩展,直到左右字符不相等为。以每个字符为中心:对于每个字符,分别考虑以该字符为中心的奇数长度和偶数长度的回文子串。// 辅助函数,以 left 和 right 为中心向两边扩展,找到最长的回文子串长度。对于奇数长度的回文子串,以当前字符为中心,向左右两边扩展,直到左右字符不相等为止。原创 2024-04-21 08:49:41 · 64 阅读 · 0 评论 -
od面试手撕代码:实现双向链表
在指定索引插入:遍历链表,找到指定索引位置的节点,将新节点插入到该位置。以上是实现双向链表的基本思路,通过合理的数据结构和算法实现,可以高效地对链表进行插入和删除操作。根据值删除:遍历链表,找到第一个值与给定值相等的节点,将该节点从链表中删除。显示操作:提供一个方法用于显示链表中的所有节点的数据,以便验证插入和删除操作是否正确。在头部插入:如果要在链表的头部插入节点,只需创建一个新节点,将其。类,表示链表中的节点。指向新节点,并将新节点设置为头节点即可。根据值删除链表中的节点。在链表头部插入新节点。原创 2024-04-19 16:17:00 · 40 阅读 · 0 评论 -
od面试手撕代码:快乐数
如果我们在计算过程中发现某个平方和已经出现过,那么说明我们陷入了循环,此时可以直接返回。综合以上步骤,我们可以设计一个算法来检测一个给定的正整数是否是快乐数。如果我们陷入了循环,即出现了重复的平方。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。或者陷入循环,我们可以使用一个集合来保存每次计算得到的平。,我们需要计算每个位置上的数字的平方和。,并重复上述步骤,直到计算得到的平方和为。如果已经计算得到当前和,说明存在循环,返回。和,那么输入的数不是快乐数,返回。最终,如果我们得到的平方和为。原创 2024-04-19 09:29:26 · 215 阅读 · 0 评论 -
od面试手撕代码:消消乐游戏
根据栈的性质,栈中的字符是按照消除规则进行排列的,即相同的字符会被消除掉,不同的字符会保留在。消除操作是按照以下规则进行的:每次遇到一个字符,如果栈为空或者栈顶的字符与当前字符不同,则将。对于每个字符,如果栈为空,或者栈顶字符与当前字符不相等,则将当前字符入栈。如果栈顶字符与当前字符相等,则出栈,表示消除相邻且相同的字符。如果栈为空或者栈顶的字符与当前字符不同,则将当前字符压入栈中。是输入字符串的长度。最终,栈中剩余的字符就是游戏结束后得到的字符串。如果栈顶的字符与当前字符相同,则将栈顶字符出栈。原创 2024-04-19 09:28:13 · 130 阅读 · 0 评论