数据结构和算法问题
现状 | 统计 |
---|---|
总C++问题 | 188 |
总体 Python 问题 | 15 |
当前每日连胜 | 11 |
最后的连胜 | 06/20/2019 - 06/21/2019 |
当前连胜 | 06/23/2019 - 07/03/2019 |
注意:这里的一些代码是旧的,是在我学习C++时编写的。代码可能不安全或做出错误的假设。请谨慎使用。始终欢迎拉取请求。
链接列表问题
问题 | 溶液 |
---|---|
从最后一个节点开始查找链表的第 n 个节点。 | nthToLastNode.cpp, nth_to_last_node.py |
将数字相加,其中数字的每个数字都由链接列表的节点表示。将输出作为链表提供。 | add_two_numbers_list.py add_two_numbers_lists.cpp |
交换链接列表的节点而不交换数据。 | swapNodesWithoutSwappingData.cpp, swap_nodes_without_swapping_data.py |
以迭代和递归方式反转链表 | reverseLinkedListIterAndRecurse.cpp, reverse_linkedlist.py |
给定一个链表,反向备用节点并在末尾追加。 | 反向交替节点.cpp |
仅给定一个节点指针,从链接列表中删除该节点。 | 删除节点.cpp |
删除整个链接列表。 | 删除链接列表.cpp |
打印链接列表的中间节点,无需迭代两次。 | printMiddleNode.cpp |
确定链表是否为苍白。 | 列表棕榈树.cpp |
在排序的链接列表中插入数据。 | insertInASortedLinkedList.cpp |
确定两个给定链表的交点(合并)。 | findIntersectionPointOfLists.cpp, intersection_of_lists.py |
克隆一个链接列表,其中包含下一个和一个随机指针,空间复杂性 - O(1)。 | cloneListWithRandomPtr.cpp, clone_list_with_random_ptr.py |
给定一个包含重复项的已排序链接列表,在一次迭代中删除重复项。 | 删除重复来自排序列表.cpp |
使用弗洛伊德循环查找算法,检测链表是否包含循环,如果它确实包含循环,则删除循环 | 浮选环检测.cpp |
使用合并排序对链接列表进行排序 | merge_sort.cpp |
给定一个单一的链接列表 L0-> 升1-> ... -> Ln-1-> 升n.重新排列列表中的节点(就地),以便新形成的列表为: L0-> 升n-> 升1-> 升n-1-> 升2-> 升n-2.... | rearrange_list.cpp |
包括
Include 包含数据结构和某些算法的单个标头实现。
数据结构/算法 | 实现 |
---|---|
通用宏和算法,如交换、随机数生成 | generic.h |
通用堆栈实现 | stack.h |
通用队列实现 | queue.h |
泛型列表实现 | 列表.h |
二叉搜索树实现 | 二进制搜索树.h |
快速排序实现 | quickSort.h |
合并排序实现 | mergeSort.h |
选择排序实现 | 选择排序.h |
气泡排序实现 | bubbleSort.h |
Linux Kernel Double LinkedList 实现 | double_linked_list.h |
通用图形实现(邻接列表) | 图.h |
堆排序实现 | heap_sort.h |
我自己的字符串库实现 | pstring.h pstring.cpp |
位操作问题
问题 | 溶液 |
---|---|
确定数字是否为2的幂。 | power_of_2.cpp |
添加两个表示为字符串的二进制数。 | addBin.cpp |
确定给定数字的下一个幂 2。 | next_power_of_2.cpp |
使用位操作确定数字是否为 3 的倍数。 | multiple_of_3.cpp |
确定机器的端度,以反向端度打印一个数字。 | 反向常量.cpp |
查找给定数字的奇偶校验。 | find_parity.cpp |
使用位操作实现数字到 7 的快速乘法。 | multiply_by_7.cpp |
反转无符号整数位(两种方法 - 逐位反转和分而治之)。 | reverseBitsOfAnInteger.cpp |
小函数,用于确定给定整数中右最设置位的位置。 | right_most_set_bit.cpp |
给定一个数字向量,只有一个数字出现奇数次,找到该数字。 | find_odd_one_out.cpp |
给定两个整数,确定它们的总和是否会是间歇性溢出。 | 整数溢出.cpp |
将数字 A 转换为 B 需要多少位翻转操作。 | 计数位数比特翻转.cpp |
在 x 的二进制表示形式中给定一个数字 x 和两个位置(从右侧开始),编写一个函数,该函数在给定的两个位置交换 n 个右位并返回结果。还假定这两组位不重叠。 | swapSetOfBits.cpp |
在不使用任何算术运算符的情况下将两个数字相加 | addition_without_operators.cpp |
路易丝和理查德玩一个游戏。他们有一个计数器设置为N.Louise获得第一个转弯,然后转弯交替。在游戏中,它们执行以下操作:
|