首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构+算法
Forlogen
创建于2021-07-05
订阅专栏
有关数据结构和算法的基础介绍,以及LeetCode相关题目
等 1 人订阅
共204篇文章
创建于2021-07-05
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
56 -合并区间 - python + Java
给出一个区间的集合,请合并所有重叠的区间。解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。题目要求合并数组中所有重叠的区间,如果两两观察数组中的元素,如果两个元素有重叠,那么后一个元素的开始位...
22 - 括号生成 - python
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。0..p[0..p[0..res.append(''.track.track.track.track.
20 - 有效的括号 - python+ Java
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。stack.stack.map.map.map.for (int i = 0; i < s...
88 - 合并两个有序数组 - python
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums...
50 - Pow(x, n) - python
实现 pow(x, n) ,即计算 x 的 n 次幂函数。输入: 2.输出: 1024.输入: 2.输出: 9.输入: 2.输出: 0.解释: 2-2 = 1/22 = 1/4 = 0.-100.0 < x < 100.0n 是 32位有符号整数,其数值范围是 [−231, 23...
剑指offer 65 - 不用加减乘除做加法 - python
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。相加各位的值,不算进位,二进制每位相加就相当于各位做异或操作,即 a ^ b ;计算进位值,相当于各位做与操作,再向左移一位,,即 (a & b) << 1。重复上述两步, 各位相加 ,计算进位值。
剑指offer 15 - 二进制中1的个数 - python
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。法1:使用Python内置的函数bin()将给定的整数转换为二进制形式,对应的二进制数为0b开头的形式,所以还需要将其替换为空字符串。然后,将二进制字符串转换为list,判断list中字符为'1'的个数即可。num ...
[回溯法] -- 47 - 全排列Ⅱ - python + Java
给定一个可包含重复数字的序列,返回所有不重复的全排列。给定的序列中包含有重复数字,因此结果不能有重复的元素存在。一种方法就是使用上一道题的代码,只是在最后保存结果时多加一个判断。results.append(track.track.track.但这样的方法多考虑了很多重复的情况,...
[回溯法] -- 46 - 全排列 - python + Java
给定一个没有重复数字的序列,返回其所有可能的全排列。题目要求返回给定无重复元素数序列所有可能的全排列,那么就需要穷尽考虑所有可能的情况,所以选择使用用回溯法。例如,根节点为初始节点,因此,此时的路径为空,选择列表就是全部的1,2,3。当走到[2],[1,3]节点时,由于2已经在当...
12 - 整数转罗马数字 - python
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存...
13 - 罗马数字转整数 - python
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存...
查找算法 - python
根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。线性查找是查找中最为暴力的一种方法,它的查找过程为:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,如果某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个(或...
9 - 回文数 - python
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。解释: 从右向左读, 为 01 。另外如果x为负数,直接返回False;如果x是小于10的正数,直接...
8 - 字符串转换整数 (atoi) - python
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该...
11 - 盛最多水的容器 - python
...a_1,a_2,...a1,a2,...(i,ai)。(i,0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最...
24 - 两两交换链表中的节点 - python
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。给定 1->2->3->4, 你应该返回 2->1->4->3.题目要求两两交换链表中的节点,并返回交换后新链表的表头。我们可以设置两个指针slow和fast分...
206 - 反转链表 - python + Java
反转一个单链表。进阶:你可以迭代或递归地反转链表。辅助数组法:首先遍历链表中的元素,并使用额外的数组保存访问的节点值,然后将数组反转,最后使用反转后的数组构建新的链表并返回链表头。 r.append(cur.cur = cur.r.cur.cur = cur.return new...
二分查找解题模板
所谓模板只是为了在解决相关问题时提供一个较好的出发点,具体细节还应根据具体的题目进行调整。O(logN)。self.self.right = len(self.if self.nums[mid] == self.elif self.nums[mid] < self.elif se...
144 + 145 - 二叉树的前序遍历 + 二叉树的后序遍历 - python
给定一个二叉树,返回它的前序遍历(后序遍历)。root = stack.res.append(root.if root.stack.append(root.if root.stack.append(root.node = stack.if node.stack.append(no...
143 - 重排链表 - python
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。给定链表 1->2->3->4, 重新排列为 1->4->2->3.给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.根据题目的描述和给的示例可以看出,链表重排后的形式为链表的右半部分反转...
下一页