数据结构和算法问题
| 当前状态 | 统计 |
|---|---|
| 总C ++问题 | 188 |
| python总问题 | 15 |
| 当前的每日连胜 | 11 |
| 最后一条 | 06/20/2019-06/21/2019 |
| 当前条纹 | 06/23/2019-07/03/2019 |
注意:这里的某些代码是旧的,是在我学习C ++时编写的。代码可能不安全或做出错误的假设。请谨慎使用。始终欢迎拉动请求。
LinkedList问题
| 问题 | 解决方案 |
|---|---|
| 从上一个查找链接列表的第n个节点。 | nthtolastnode.cpp,nth_to_last_node.py |
| 添加数字在数字中由linkedlist的节点表示的数字。将输出作为链接列表。 | add_two_numbers_lists.cpp,add_two_numbers_list.py |
| 交换LinkedList的节点而无需交换数据。 | swapnodeswithoutswappingdata.cpp,swap_nodes_without_swapping_data.py |
| 迭代和递归扭转链接列表 | reverselinkedlistiterAndRecurse.cpp,reverse_linkedlist.py |
| 给定一个链接列表,反向备用节点并在最后附加。 | reversealternatenodes.cpp |
| 仅给定节点指针,将节点从链接列表中删除。 | deletenode.cpp |
| 删除整个LinkedList。 | deletelinkedlist.cpp |
| 打印LinkedList的中间节点,而无需迭代两次。 | printmiddlenode.cpp |
| 确定链接列表是否为pallindrome。 | ListPallindrome.cpp |
| 将数据插入分类的链接列表中。 | insertinasortedlinkedlist.cpp |
| 确定两个给定链接列表的交叉点(合并)点。 | findintersectionpointoflists.cpp,Intersection_of_lists.py |
| 克隆一个LinkedList,其下一个和随机指针,空间复杂性-O(1)。 | clonelistwithrandomptr.cpp,clone_list_with_random_ptr.py |
| 给定一个带有重复项的分类链接列表,请在一次迭代中删除重复项。 | 删除fromSortedList.cpp |
| 使用Floyd的循环查找算法,检测LinkedList是否包含周期,如果它确实包含循环,请删除循环 | floycycledetection.cpp |
| 使用合并排序对链接列表进行排序 | Merge_sort.cpp |
| 给定一个单独的链接列表L 0- > l 1- >… – > l n -1- > l n 。重新排列列表中的节点(本地),以便新的列表为:l 0- > l n- > l 1- > l n -1- > l 2- > l 2-> l n -2 …. | retrange_list.cpp |
包括
包括包含数据结构和某些算法的单个标头实现。
| 数据结构/算法 | 执行 |
|---|---|
| 通用宏和算法(如交换),随机数生成 | 通用 |
| 通用堆栈实现 | stack.h |
| 通用队列实现 | 队列 |
| 通用列表实现 | list.h |
| 二进制搜索树实现 | binarysearchtree.h |
| 快速排序实现 | QuickSort.H |
| 合并排序实现 | Mergesort.H |
| 选择排序实现 | Selectionsort.H |
| 气泡排序实现 | Bubblesort.H |
| Linux内核双LinkedList实现 | double_linked_list.h |
| 通用图形实现(邻接列表) | Graph.h |
| 堆排序实现 | heap_sort.h |
| 我自己的字符串库实现 | pstring.h pstring.cpp |
位操纵问题
| 问题 | 解决方案 |
|---|---|
| 确定数字是否是2的幂。 | power_of_2.cpp |
| 添加两个表示为字符串的二进制号。 | addbin.cpp |
| 确定给定数字2的下一个功率。 | next_power_of_2.cpp |
| 使用位操作确定一个数字是否为3的倍数。 | 多_OF_3.CPP |
| 确定机器的端,打印一个反向endianess的数字。 | 逆转录 |
| 找到给定数字的奇偶校验。 | find_parity.cpp |
| 使用位操作实现数字至7的快速乘法。 | pultly_by_7.cpp |
| 无符号整数的反向位(两种方法 – 刻度和分裂和征服)。 | reverseverbitsofaninteger.cpp |
| 小功能以确定给定整数中大多数设置位的位置。 | right_mast_set_bit.cpp |
| 给定数字向量,只有一个数字发生奇数次,找到数字。 | find_odd_one_out.cpp |
| 给定两个整数,确定它们的总和是否为Interger溢出。 | integeroverflow.cpp |
| 将数字A转换为B。 | Countnumberofbitflips.cpp |
| 给定一个数字X和两个位置(从右侧)在X的二进制表示中,写下一个函数,可以在给定的两个位置上交换正确的位并返回结果。还鉴于两组位不会重叠。 | swapsetofbits.cpp |
| 添加两个数字而不使用任何算术运算符 | affed_without_operators.cpp |
路易丝(Louise)和理查德(Richard)玩游戏。他们有一个与N. Louise的柜台,然后转弯,此后转弯交替。在游戏中,他们执行以下操作:
最终值是新的N,它再次用于后续操作。当计数器减少到1,即,n == 1时,游戏结束,而最后一次获得有效举措的人会赢得胜利。
|
counter_game.cpp |
| 确定两个整数是否具有相反的符号。 | check_opposites_signs.cpp |
| 在给定整数的位置p和q处交换两个位。 | swapbits.cpp |
| 检查一个数字是否为4。 | check_if_power_of_4.cpp |
破解编码面试问题
| 问题 | 解决方案 |
|---|---|
| 问题1-1:第6版:编写算法以确定字符串是否具有唯一字符。我们可以在不使用其他数据结构的情况下做到这一点吗? | 1-1-hasuniquechars.cpp,1-1-hasuniquechars.py |
| 问题1-2:第5版:通过通过一个终止C字符串时,将字符串转换为一个字符串。 | 1-2-eDi5-reversestring.cpp |
| 问题1-2:第6版:给定两个字符串,确定一个字符串是否为另一个字符串。 | 1-2-perm-strings.cpp,1-2-perm-strings.py |
| 问题1-3:版本5:编写算法以从字符串中删除重复的字符。 | 1-3-eDi5-remerveduplicates.cpp |
| 问题1-3:第6版:urlify:用“%20”替换字符串中的所有空间。预先放置 | 1-3-urlify.cpp |
| 问题1-4:第6版:给定一个字符串,写一个函数以检查它是否是pallindrome的排列。 | 1-4-Pallindrome-permutations.cpp |
| 问题1-5:第6版:可以在字符串上执行三个可能的编辑 – 插入字符,删除char,更换字符。给定两个字符串,确定它们是一个或0编辑。 | 1-5个编辑 – away.cpp |
| 问题1-6:实施一种执行基本字符串压缩的方法。示例字符串AABCCCCCAAA应压缩到A2B1C5A3 ,但是,如果压缩字符串大于原始字符串,请返回原始字符串 | 1-6-string-compression.cpp |
| 问题1-7:将矩阵顺时针(&逆时针)旋转90度 | 1-7-matrix-rotation.cpp |
| 问题1-8:编写一种算法,以便如果MXN矩阵的元素为0,则其整个行和列设置为0。 | 1-8-Zero-Matrix.cpp |
| 问题1-9:给定两个字符串S1和S2,确定S2是S1的旋转,仅使用一个呼叫来检查一个字符串是否是另一个字符串旋转的函数。 | 1-9-string-rotation.cpp |
| 问题2-1:从未分类的链接列表中删除重复项。如果不允许临时缓冲区。 | 2-1示例-dups.cpp |
| 问题2-2:确定单个链接列表的最后一个节点。 (迭代和递归方法) | 2-2-kthtolast.cpp |
| 问题2-3:实现算法以删除单个链接列表中间的节点 | 2-3-删除中间node.cpp |
| 问题2-4:分区一个值x周围的链接列表,所有小于x的节点都出现在所有大于x的节点之前 | 2-4分区 |
问题2-5:您有两个数字由链接列表表示,每个节点包含一个数字。数字以相反的顺序存储,因此1位数字在列表的头部。编写一个添加两个数字并将总和作为链接列表返回的函数。例如:
|
2-5-add-lists.cpp |
| 问题2-6:确定链接列表是否为palindrome(2个迭代和一种递归方法 | 2-6-Palindrome.cpp |
| 问题2-7:确定两个单链接列表是否相交,如果是,则返回相交节点。相交是根据参考而不是对值定义的 | 2-7 Intertsection.cpp |
| 问题2-8:检测链接列表是否具有循环,找到循环的开始节点并删除循环 | 2-8-Loop-detection.cpp |
动态编程问题
| 问题 | 解决方案 |
|---|---|
| 使用不同的回忆技术n fibonacci术语 | fibonacci.cpp |
| 最长的常见子序列问题 | lcs.cpp,limest_common_subsequence.py |
| 最大价值连续的子序列问题Wiki | max_subsequence.cpp |
| 加泰罗尼亚数字 – 用n键计算可能的二进制搜索树的数量 | catalan_number.cpp |
| 计算从源原点(0,0)到AMXN网格中目的地(M-1,N-1)的唯一路径数量。您只能向下或正确的方向移动。 | unique_paths.cpp |
| 0-1背包问题:想象一下您是小偷,您想用充满东西的房间偷东西。您有一个可以处理重量W的最大容量的背包,并且要填充它,以使其值得最大。作为一个聪明的小偷,您知道房间中每个物品的重量和价值。您将如何填充背包,从而获得最大可能的价值,以便只能填充容量W。 | 0_1_knapsack_problem.cpp |
树问题
| 问题 | 解决方案 |
|---|---|
| 使用队列的迭代级订单遍历树的遍历 | LevelOrderTraversAliterative.cpp,Level_order_tree_tree_traversal_iterative.py |
| 树木的递归水平秩 | LevelOrderTraversAlRecursive.cpp,Level_order_tree_tree_traversal_recursive.py |
| 曲折的树 | zigzagtraversal.cpp,zig_zag_traversal.py |
| 二进制搜索树中给定节点的前身和继任者 | predexporsSuccessor.cpp |
| 给定两个节点的值在二进制搜索树中,找到最低的共同祖先(LCA)。假设两个值都存在于树上。 | 最低common-ancestor.cpp,lowest_common_ancestor.py |
| 给定二进制树(与二进制搜索树不同),找到最低的共同祖先(LCA)。 | 最低的common-ancestor-binary-tree.cpp |
| 给定二进制树,将每行的所有根到叶路径打印出来。 | printallroottoleafpath.cpp |
| 确定树是否是总和树。 Sumtree是一棵二进制树,其中节点的值等于其左子树和右子树中存在的节点的总和。一个空的树是Sumtree,可以将空树的总和视为0。叶子节点也被视为Sumtree。 | sumtree.cpp |
| 将树转换为Sumtree,以便每个节点都是原始树的左右子树的总和。 | convert_to_sum_tree.cpp,convert_to_sum_tree.py |
| 将排序的数组转换为平衡的二进制搜索树。 | sortedArrayTobst.cpp |
| 给定二进制树,生成每个垂直列的总和。 | 垂直节目 |
| 给定一个二进制树和钥匙,在树中存在带有键的节点。在节点的所有祖先中找到所有的祖先,这里的祖先是从节点到root的直径路径的节点。 | node_ancestors_in_root_path.cpp |
| 给定二进制树和钥匙,用键返回节点的级别。 root在1级,如果带有键的节点不存在树中,请返回0 | Level_of_node.cpp |
| 给定二进制树,找到从根到节点的所有路径,其总和为k。 | k_sum_paths.cpp |
| 给定二进制树,以相反顺序按级别打印其节点。即所有终于存在的节点应首先打印出来,然后是第二层级别的节点,等等。.所有级别的所有节点均应从左到右打印。 | reverselevelordertraversal.cpp |
| 递归和迭代地倒转二进制树。 | invert_a_tree.cpp |
| 给定二进制搜索树,在其中找到一个给定钥匙的ceil和地板。如果给定的钥匙位于BST中,则地板和天花板都等于该键,否则Ceil等于BST和地板中的下一个更大的钥匙(如果有)等于BST中的先前大键(如果有) | floor_ceil_bst.cpp |
| 在二进制搜索树中找到kth最小的元素 | kth_smallest.cpp |
| 验证给定的二进制树是否是二进制搜索树。 | validate_bst.cpp |
| 给定二进制搜索树和一个目标编号,如果BST中存在两个元素,则返回true,使其总和等于给定的目标。 | find_target_k.cpp |
| 给定一个非空的二进制搜索树和目标值,请在最接近目标的BST中找到值。另外,要注意目标值是浮点。将只有一个最接近目标的唯一值。 | cless_bst_value.cpp,cless_bst_value.py |
| 给定二进制树,穿越预订,构造包含节点值和括号的字符串输出。空节点需要由空括号对表示“()”。而且,您需要省略所有空的括号对,这些空括号对不会影响字符串和原始二进制树之间的一对一映射关系。代码文件中的示例 | String_from_tree.cpp |
字符串问题
| 问题 | 解决方案 |
|---|---|
| 实施Robin-Karp算法用于字符串搜索 | robinkArptringMatching.cpp |
| 查找给定字符串的下一个排列,即。重新排列给定的字符串这种方式是下一个词典的字符串,比给定的字符串更大 | next_permunt.cpp |
| 实施Z算法用于模式匹配 | Z.CPP |
| 自我创建的字符串库的测试用例 | pstring_test.cpp |
| 在字符串中获取最后一个单词的长度。 | length_of_last_word.cpp |
| 找到两个字符串之间的区别。字符串T是通过随机洗牌字符串S生成的,然后在随机位置添加一个字母。确定在t中不同的字符 | find_difference.cpp |
常见的数据结构和逻辑问题
| 问题 | 解决方案 |
|---|---|
| 按螺旋顺序打印矩阵的内容 | matrix_spiral_print.cpp |
| 给定一个M X N矩阵,通过逆时针旋转旋转,并显示所得矩阵。 | rotate_matrix.cpp |
| 通过r元素旋转阵列(左右) | array_rotation.cpp |
| 给定一系列重复/非重复互动,请确定此数组中的第一个非重复INT | first_non_repeating_int.cpp |
| 在Quantumland中,有n个城市从1到n。在这里,c我表示这个城市。 Quantumland有N -1道路。在这里,C I和C I+1在它们之间有一条双向道路,每个I <n。有一个有传言说Flatland将攻击Quantumland,而女王希望确保她的土地安全。如果C I或C I+1中有警卫,则C I和C I+1之间的道路是安全的。女王已经在一些城市中安置了几名警卫,但她不确定他们是否足以确保道路安全。她想知道她需要雇用的新警卫人数最少。有关输入/输出详细信息,请参见解决方案中的评论。 | save_quantamland.cpp |
| 给您一个整数n。在此数字中找到数字,这些数字完全划分为n(将0作为剩余时间留下)并显示其计数。对于n = 24,有2个数字(2和4)。这两个数字都完全划分了24。因此,我们的答案是2。请参阅解决方案文件的标题评论中的更多详细信息。 | finddigits.cpp |
| 加密然后使用Caeser密码解密文本。 | caeser_cipher.cpp |
| 加密然后使用Vigenère密码解密文本。 | vigenere_cipher.cpp |
| 有效地生成1至n之间的二进制数。 | n_binary.cpp |
| 实施电源功能 | power_function.cpp |
数学问题
| 问题 | 解决方案 |
|---|---|
| 打印字符串的所有排列。示例:ABC的排列是ABC,ACB,BCA,BAC,CAB,CBA | string_permutations.cpp |
| 欧几里得算法找到两个数字的最大共同除数。 (迭代和递归) | gcd.cpp |
| 使用鸿沟和征服方法实施POW(X,Y)。尝试在O(logN)中实现它 | POW.CPP |
| 计算大量阶乘,例如100(将有158位数字) | fortorial_of_large_num.cpp |
| 从传统的移动键盘上输入的数字中生成所有可能的单词 | phone_digits.cpp |
| 给定数字的字符串表示形式,请从字符串中删除n个字符,以使数字表示最低。 | lowest_possible_number.cpp |
| 检测数字是否是一个快乐的数字。一个数字是快乐的数字,如果操作顺序被数字的平方替换为数字的总和最终达到1。如果执行上述操作时,如果我们处于无限循环中,则数字不是一个快乐的数字。 | happy_number.cpp |
堆栈问题
| 问题 | 解决方案 |
|---|---|
| 我们有一系列股票的N每日价格报价。我们需要计算所有N天股票价格的跨度。 ITH日的跨度定义为连续的最大天数,股票的价格小于或等于ITH Day。对于股票报价{100、60、70、65、80、85}跨度将为{1、1、2、1、4、5}。第1天的跨度始终是1,现在第2天的股票为60,没有一天的股票小于60。因此,跨度保留1。对于第3天,股票的价格为70,因此其跨度为2,因为前一天为60,等等。 | stock_span_problem.cpp |
| 给定infix表达式,将其转换为后缀表达式,例如(a+b)*c-> ab+c* | infix_to_postfix.cpp |
| 给定一个仅包含字符'(',')','{','}','[''']'的字符串,确定输入字符串是否有效。支架必须按正确顺序关闭,“()”()和“()” {} [] {] {] {}“都是有效的,但是“(”和“(”和“(”(“(”)”不是。 | 有效_ Parthenthes.cpp |
排序和搜索问题
| 问题 | 解决方案 |
|---|---|
| 给定一个分类的向量,返回矢量中值发生的第一个索引,如果不存在数字,请返回-1 | first_occurrence_binary_search.cpp |
| 在整数数组中找到第一个重复元素。给定一个整数数组,在其中找到第一个重复元素。我们需要找到不止一次发生的元素,并且首次出现的索引最小。 | firstretepeatingelement.cpp |
| 给定一个未分布的整数列表,a = {a 1 ,a 2 ,…,a n },找到它们之间具有最小绝对差异的元素吗?如果有多对,请全部找到它们。 | kersest_numbers.cpp |
| 给定一个排序的数组,确定此数组中固定点的索引。如果数组没有固定点返回-1。当元素的索引与索引IE i == arr [i]时,数组具有固定点 | fixepoint.cpp |
| 在阵列中找到最大元素,该数组首先增加然后减小。输入:arr [] = {8、10、20、80、100、200、400、500、3、2、1},输出:500。数组可能严格增加或减少。预期时间复杂性为O(logn)。 | Findmaximum.cpp |
| 给定一系列正整数和/或负整数,在数组中找到最接近0的数组。 | findclosestpairtozero.cpp |
艺术家Numeros有两个列表A和B,因此B是A. Numeros的排列,为这些列表感到非常自豪。不幸的是,在将它们从一个展览中运送到另一个展览时,有些数字被排除在A中。您能找到丢失的数字吗?笔记:
。
|
失踪名称 |
| 从两个排序的数组中找到最接近的对。给定两个排序的数组和一个数字x,找到最接近x的总和的对,并且对每个数组中都有一个元素。我们得到了两个数组AR1 [0…M-1]和AR2 [0..N-1],并且一个数字X,我们需要找到一对AR1 [I] + AR2 [J],这样的绝对值(AR1 [I] + AR2 [J] – X)的绝对值是最小的。 | cppeTorted.cpp |
| 给定n个元素的数组a,找到三个索引i,j和k,以便a [i]^2 + a [j]^2 = a [k]^2。 o(n2)时间复杂性和o(1)空间复杂性 | Squeresum.cpp |
| 给定一个大小为n的未分类阵列arr [0..n-1],找到最小长度子阵列arr [s..e],使得对此子阵列进行排序使整个数组分类。 | MinlengthnSortedArray.cpp |
| 在算术进展中找到缺少的数字 | 失踪number2.cpp |
| 在三个排序的向量中找到共同元素 | commonin3arrays.cpp |
| 在未分类数组/向量中找到给定总和的所有对 | find_pairs_with_sum.cpp |
| 给定数组,在其中找到峰值元素。峰值元素是比其邻居大的元素。 | peak_element.cpp |
| 鉴于一系列不同的非阴性整数,在其中找到最小的丢失元素。 | smallest_missing.cpp |
| 将向量中的所有零移动到最后 | move_zeros.cpp |
图形问题
| 问题 | 解决方案 |
|---|---|
| 深度的第一遍历 | dfsdemo.cpp |
| 宽度的第一段 | bfsdemo.cpp |
| 使用Dijkstra算法计算从开始位置(节点s)到图中所有其他节点的最短距离。 | dijkstra-shortest-reach.cpp |
| 使用PRIM的算法计算给定图的最小生成树的总重量(边缘的权重) | primsmst.cpp |
| 使用Kruskal的算法打印给定图的最小生成树(MST)。 | kruskalmst.cpp |
| 创建一个程序来为每个角色作为表生成霍夫曼编码。 | huffman_encoding.cpp |
| 在包含字母的2D板中搜索一个给定单词。可以通过依次跨越相邻的水平或垂直细胞来构建该单词。在形成单词的顺序中,在同一位置上的字母不能超过一次。 (检查文件顶部以获取示例。) | grid_word_search.cpp |
| 给定一个2D屏幕,像素的位置以及填充颜色的新值,请更换像素的颜色和所有相邻的(向上,下方,左,右)相同的彩色像素,并带有新颜色。这与MS-Paint中的一个区域相同(记住Bucket符号)。 | Flood_fill.cpp |
贪婪的问题
| 问题 | 解决方案 |
|---|---|
| 给定两个整数阵列A和B,每个阵列包含n个整数。您可以自由列入数组中元素的顺序。是否有A和B的置换a',b',因此,所有i的a'i + b'i≥k ,其中a“ i i”表示数组a'and b'中的ith元素在数组b '中表示i的元素。 | twe_arrays.cpp |
| 约翰正在接受命令。我的订单是由ITH客户在时间的时间下下达的,需要时间才能进行启示。客户获得订单的顺序是什么? (请参阅解决方案评论中的更多详细信息) | orders_order.cpp |
回溯问题
| 问题 | 解决方案 |
|---|---|
根据我们在Telphone/Mobile DialPad上看到的映射,给您一个数字字符串(例如“ 1234”,“ 567”等),提供我们可以从该数字字符串中生成的所有可能的字母组合。如果您键入了旧式手机的短信,您会知道。对于例如“ 1”映射到“ ABC”,将2映射到“ def”。您可以参考图像。
请注意,订单在结果集中无关紧要。 |
dialpad_combinations.cpp |
在支持“?”的支持下实施通配符模具&' '。
。查看文件中的示例以获取更多详细信息。 |
wild_card_matching.cpp |
| 给定2D板和词典中的单词列表,请从列表中找到所有可能的单词。 (在解决方案中检查示例) | Word_search.cpp |
LEET代码问题
| 问题 | 解决方案 |
|---|---|
| 给定一个无重复的整数阵列,请返回其范围的摘要。例如,给定[0,1,2,4,5,7],返回[“ 0-> 2”,“ 4-> 5”,“ 7”]。 | summary_ranges.cpp |
给定2D矩阵,具有以下属性
|
search2dii.cpp |
| 给定一个未分类的整数阵列,找到第一个缺失的正整数。示例:[1,2,0]应返回3,[3,4,-1,1]应返回2。预期时间复杂性o(n),解决方案应使用恒定空间 | FirstMissingPositivenum.cpp |
| 给定一个无数整数阵列,请找到最长的连续元素序列的长度。例如:给定[100、4、200、1、3、2]。最长的连续元素序列是[1,2,3,4]。返回其长度:4。算法应以O(n)复杂性运行。 | 最长的Consecutiveseq.cpp |
| 给定两个排序的整数数组NUMS1和NUMS2,将NUMS2合并到NUMS1中为一个排序的数组。您可以假设NUMS1具有足够的空间(大小或大小,大小或等于M + N)可以容纳NUMS2中的其他元素。 NUMS1和NUMS2中初始初始的元件数分别为M和N。 | Mergearrays.cpp |
给定一系列非阴性整数,您最初位于数组的第一个索引中。阵列中的每个元素代表您在该位置处的最大跳跃长度。确定您是否能够达到最后一个索引。例如:
|
JumpGame.cpp |
| 如果是一个正整数,请返回其相应的列标题,如Excel表中出现。例如1-> a,2-> b,… 26-> z,27-> aa,28-> ab,… 705-> aac | excelcolsheettitle.cpp |
| 给定数组数字,写一个函数以将所有0移至其末尾,同时保持非零元素的相对顺序。例如,给定的nums = [0、1、0、3、12],在调用您的函数后,NUM应该为[1、3、12、0、0]。 | movezeroes.cpp |
| 给定一个整数数组,查找阵列是否包含任何重复项。如果任何值在数组中至少出现两次,则函数应返回true,如果每个元素都不同,则应返回false。 | containsDuplicate.cpp |
给定列表,将列表旋转为k lace的右侧,其中k是非负数的。例如:
|
rotatelist.cpp |
给定两个词word1和word2,找到将Word1转换为Word2所需的最小步骤数。 (每个操作都被计为1步。)。您有以下三个单词的操作:
。 |
editdistance.cpp |
| 给定二进制树,每个下一个指针都填充每个指向其下一个右节点。如果没有下一个右节点,则应将下一个指针设置为null。最初,所有下一个指针都设置为无效。您只能使用恒定的额外空间。您可能认为它是一棵完美的二进制树(即,所有叶子都处于同一水平,每个父母都有两个孩子)。 | connectnextpointers.cpp |
| 给定括号成对,编写一个函数以生成形式良好的括号的所有组合。例如,给定n = 3,解决方案集为“(((())”,“(()())”,“(())()()”,“()(())”,“()()()()()()()() | generate_parenthesis.cpp |
| 给定一个数组,其中包含从0、1、2,…,n取的n个不同的数字,找到从数组中缺少的一个数字。例如,给定的nums = [0,1,3]返回2。 | 丢失_number.cpp |
| 假设您事先在您未知的某个枢轴上旋转一个排序的数组。 (即,0 1 2 4 5 6 7可能成为4 5 6 7 0 1 2)。找到最小元素。您可能假设数组中不存在重复。 | find_min_rotated.cpp |
| 给定n个整数的数组s,在s中找到三个整数,以使总和最接近给定的数字,目标。返回三个整数的总和。您可以假设每个输入都有一个解决方案。 | Threesumclosest.cpp |
| 给定n个非阴性整数a 1 ,a 2 ,…,a n ,其中每个代表坐标处的一个点(i,a i )。绘制n垂直线,以使线I的两个端点位于(i,a i )和(i,0)。找到两条线,与X轴一起形成一个容器,使容器中包含最多的水。注意:您可能不会倾斜容器。 | maxarea.cpp |
| 给定一个仅在0-9的数字的二进制树,每个根到叶路径都可以代表一个数字。一个示例是扎根路径1-> 2-> 3,代表数字123。找到所有根到叶数的总和。解决方案评论中的示例 | sumroottolefnumbers.cpp |
| 假设您有一个阵列,ITH元素是第一天给定股票的价格。如果您只允许完成一项交易(即,购买一笔并出售一股股票),请设计算法以找到最高利润。 | maxprofitstock.cpp |
| 给定的AMXN网格充满了非负数,可以从左下角到右下找到一条路径,从而最大程度地减少其路径的所有数字总和。注意:您只能在任何时间点向下移动或向右移动。 | Minpath.cpp |
| 计算小于非阴性数字的质数数量,n。 | countprimes.cpp |
| 鉴于只能使用1到9个数字,并且每个组合应是一组唯一的数字,因此找到总计数为N的k数字的所有可能组合。确保以升序排序集合中的数字。示例:对于k = 3,n = 9结果将为[[1,2,6],[1,3,5],[2,3,4]],同样,对于k = 3,n = 7,结果将是[[1,2,4]。 | 组合3.cpp |
| 给定一个非负整数num,反复添加其所有数字,直到结果只有一个数字。例如:给定的num = 38,该过程类似于:3 + 8 = 11,1 + 1 = 2。由于2只有一个数字,请将其返回。后续:您可以在O(1)运行时无需任何循环/递归吗? | addDigits.cpp |
| 给定一个具有单元格值0或1的矩阵。找到从(A1,B1)到(A2,B2)的最短路径的长度,因此只能通过具有值1的单元格构造路径,并且您只能以4个可能的方向行驶,即左,右,上下。 | Suptest_path_maze.cpp |
| 两个整数之间的锤击距离是相应位不同的位置数量。给定两个整数X和Y,计算锤距。 | hamming_distance.cpp |
| 鉴于两棵二进制树,并想象当您将其中一个覆盖另一棵树时,两棵树的一些节点被重叠,而另一些则没有。您需要将它们合并为新的二进制树。合并规则是,如果两个节点重叠,则将节点值作为合并节点的新值。否则,非零节点将用作新树节点。 | merge_trees.cpp |
| 编写一个将字符串作为输入的函数,仅反向字符串的元音进行反向。 | reverse_vowels.cpp |
给定一个字符串,根据字符的频率将其按降顺序排序。例如:
|
sortCharbyFrequency.CPP |
| 阵列的产物除了自我。给定一个n个整数的数组,其中n> 1,num,返回数组输出,使输出[i]等于NUM [I]以外的NUM的所有元素的乘积。 | product_except_self.cpp |
| 给定一个排序的阵列,将重复项删除到位,然后返回新长度。超出唯一元素大小的数组中的内容都没关系。预期的O(1)空间和O(n)时间复杂性。 | remove_duplicates.cpp |
| 计算网格中的岛屿数量。给定一个代表1作为陆地的网格,0作为水体,确定岛屿数量(问题评论中的更多详细信息) | count_islands.cpp |
| 从数据流中找到中位数。设计一个支持Addnum的数据结构,以在流中添加一个数字,而Findmedian则返回到目前为止看到的当前数字的中位数。另外,如果数字计数甚至是平均返回两个中间元素的返回,则否则将返回中间。 | median_stream.cpp |
| 删除最小数量的无效括号,以使输入字符串有效。返回所有可能的结果。注意:输入字符串可能包含括号以外的字母(和) | remove_invalid_parenthesis.cpp |
| Given an array and a value, remove all instances of that value in-place and return the new length. Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. The order of elements can be changed. It doesn't matter what you leave beyond the new length. | remove_element.cpp |
| Find intersection of two arrays/vectors, Given two vectors find the result of their interaction. The result should only contain unique characters and can be in any order | intersection_of_array.cpp |
| Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.例子: | |
| pattern = "abba", str = "dog cat cat dog" should return true. | |
| pattern = "abba", str = "dog cat cat fish" should return false. | |
| pattern = "aaaa", str = "dog cat cat dog" should return false. | |
| pattern = "abba", str = "dog dog dog dog" should return false. | word_pattern.cpp |
| You are provided a vector of numbers, where each number represents | |
| price of a stock on ith day. If you are permitted to only complete | |
| one transaction per day (ie buy one and sell one stock), design | |
| an algorithm to find the maximum profit. | best_time_to_buy_sell.cpp |
| Given a sentence, reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. | |
| 例子: | |
| Input: She loves chocolate | |
| Output: ehs sevol etalocohc | reverse_words.cpp |
