algorithms_and_data_structures

2025-12-11 0 887

数据结构和算法问题

当前状态 统计
总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不是2的功率,请减少柜台的最大功率比N。
  • 如果n是2的功率,则将计数器减少一半。

最终值是新的N,它再次用于后续操作。当计数器减少到1,即,n == 1时,游戏结束,而最后一次获得有效举措的人会赢得胜利。

  • 给定n,您的任务是找到游戏的获胜者。如果他们对1的反击,理查德赢了,因为它的转弯,她无法采取行动。
  • 输入格式: – 第一行包含一个整数T,即测试柜的数量。 t线跟随。每行包含n,在计数器中设置的初始数字。
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位数字在列表的头部。编写一个添加两个数字并将总和作为链接列表返回的函数。例如:

  • 输入:(7-> 1-> 6) +(5-> 9-> 2)是617 + 295
  • 输出:(2-> 1-> 9)IE 912。
  • 随访:假设列表以前顺序存储,重复上述问题。
  • 输入:(6-> 1-> 7) +(2-> 9-> 5)IE 617 + 295
  • 输出:(9-> 1-> 2)IE 912。
  • 递归和迭代实施。
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中。您能找到丢失的数字吗?笔记:

  • 如果列表中多次发生数字,则必须确保两个列表中该数字的频率相同。如果不是这种情况,那也是一个丢失的数字。
  • 您必须按上升顺序打印所有丢失的数字。
  • 即使多次丢失了每个丢失的数字一次。
  • B中的最大数量和最小数量之间的差异小于或等于100。

  • 输入将有四行:n-第一个列表的大小,其次是构成第一个列表的N空间分隔整数。 M-第二列表的大小。接下来是构成第二个列表的M空间分隔整数。按升序输出丢失的数字。
失踪名称
从两个排序的数组中找到最接近的对。给定两个排序的数组和一个数字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”。您可以参考图像。

  • 示例:“ 34”将给出输出:{“ DG”,“ DH”,“ DI”,“ EG”,“ EH”,“ EI”,“ FG”,“ FH”,“ FI”}

请注意,订单在结果集中无关紧要。

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
    给定一系列非阴性整数,您最初位于数组的第一个索引中。阵列中的每个元素代表您在该位置处的最大跳跃长度。确定您是否能够达到最后一个索引。例如:

    • a = [2,3,1,1,4],返回true。
    • a = [3,2,1,0,4],返回false。
    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是非负数的。例如:

    • 给定1-> 2-> 3-> 4-> 5-> null和k = 2,返回4-> 5-> 1-> 1-> 2-> 3-> 3-> null
    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
    给定一个字符串,根据字符的频率将其按降顺序排序。例如:

    • 输入:CCCBBBBAA输出:BBBCCCAA
    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

    下载源码

    通过命令行克隆项目:

    git clone https://github.com/mandliya/algorithms_and_data_structures.git

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

    左子网 编程相关 algorithms_and_data_structures https://www.zuozi.net/34050.html

    RVC MAKER
    上一篇: RVC MAKER
    常见问题
    • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
    查看详情
    • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
    查看详情
    • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
    查看详情
    • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
    查看详情

    相关文章

    猜你喜欢
    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务