数据结构
a_learning_boy
这个作者很懒,什么都没留下…
展开
-
LeetCode70爬楼梯-python
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2018-12-17 21:39:48 · 189 阅读 · 0 评论 -
LeetCode46全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]class Solution: def permute(self, nums): """ :type nums: L...原创 2018-12-28 16:58:34 · 254 阅读 · 0 评论 -
LeetCode100相同的树-C语言
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-12-18 15:54:12 · 370 阅读 · 0 评论 -
LeetCode125验证回文串-python
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falses.isdigit()、s.isalpha()、s.isalnum判断是否为数...原创 2018-12-17 20:19:30 · 111 阅读 · 0 评论 -
LeetCode1两数之和-Python、Java
给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一:...原创 2018-12-21 18:41:13 · 467 阅读 · 0 评论 -
LeetCode67二进制求和-Python
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"直接转换成十进制求和后转换成二进制,bin() 返回一个整数 int 或者长整数 long int 的二进制表示原创 2018-12-17 18:41:02 · 207 阅读 · 0 评论 -
LeetCode38报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个原创 2018-12-17 19:09:20 · 91 阅读 · 0 评论 -
LeetCode58最后一个单词的长度-Python
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5需要防止出现最后几位为空的情况,在清空列表时最好保留一个备份。方法一:class Solution: def lengthOfLastWo...原创 2018-12-17 19:42:17 · 175 阅读 · 0 评论 -
LeetCode101对称二叉树-C语言
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3/** * Definition for ...原创 2018-12-18 18:34:14 · 349 阅读 · 0 评论 -
LeetCode104二叉树的最大深度-C语言
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。/** * Definition for a binary tree no...原创 2018-12-18 18:51:12 · 1108 阅读 · 0 评论 -
LeetCode110平衡二叉树-C语言
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null...原创 2018-12-18 19:39:07 · 284 阅读 · 0 评论 -
LeetCode43字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。 num1 和原创 2018-12-26 11:08:40 · 105 阅读 · 0 评论 -
LeetCode617.合并二叉树-Java
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 ...原创 2019-05-30 01:00:12 · 137 阅读 · 0 评论 -
Leetc461.汉明距离-Java
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数x和y,计算它们之间的汉明距离。注意:0 ≤x,y< 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。先用异或,得到结果两数之间不...原创 2019-05-30 01:11:36 · 138 阅读 · 0 评论 -
LeetCode226.翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1/** * Definition for a binary tree node. * public class TreeNode {...原创 2019-06-05 01:15:06 · 139 阅读 · 0 评论 -
LeetCode283.移动零-Java
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。class Solution { public void moveZeroes(int[] nums) { // 用i记录当...原创 2019-07-12 19:30:58 · 211 阅读 · 0 评论 -
LeetCode107二叉树的层次遍历-Python
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]# Definition for...原创 2018-12-18 21:11:04 · 140 阅读 · 0 评论 -
LeetCode108将有序数组转换为二叉搜索树-Python
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -1...原创 2018-12-18 21:27:49 · 193 阅读 · 0 评论 -
LeetCode111二叉树的最小深度-Python
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.# Definition for a binary tree node....原创 2018-12-18 22:08:16 · 204 阅读 · 0 评论 -
LeetCode112路径总和-python
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2018-12-18 22:45:52 · 105 阅读 · 0 评论 -
LeetCode240.搜索二维矩阵二-Java
编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17,...原创 2019-07-27 19:58:38 · 196 阅读 · 0 评论 -
数据结构知识总结
链表链表是一种由节点(Node)组成的线性表,每个节点通过指针指向下一个节点。它是一种由节点组成,并能用于表示序列的数据结构。每个节点有数域和指针域。 单链表:每个节点仅指向下一个节点,最后一个节点指向空(null)。 双向链表:每个节点有两个指针p,n。p指向前一个节点,n指向下一个节点;最后一个节点指向空。 循环链表:每个节点指向下一个节点,最后一个节点指向第一个节点。 时间复杂度...转载 2018-11-01 16:38:14 · 155 阅读 · 0 评论 -
LeetCode9回文数
bool isPalindrome(int x) { int val = 0; int n; int y = x; if(x<0) return false; while(x){ n = x%10; val = val * 10 + n; x /= 10; } retur...原创 2018-11-22 10:21:28 · 90 阅读 · 0 评论 -
LeetCode202快乐数
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例: 输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + ...原创 2018-11-23 15:01:19 · 178 阅读 · 0 评论 -
LeetCode141环形链表
给定一个链表,判断链表中是否有环。设置两个指针,一个fast一个slow,遍历整个列表,若达到表尾时仍未出现指针相等则链表无环。C语言版:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool ...原创 2018-11-23 15:02:14 · 103 阅读 · 0 评论 -
LeetCode258各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。int addDigits(int num) { int sum = 0; int n; while(num){ n = num % 10; sum += n; num /= 10; } if(sum < 10) ...原创 2018-11-23 15:08:03 · 133 阅读 · 0 评论 -
LeetCode171Excel表列序号
给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28示例 3...原创 2018-11-23 15:13:53 · 107 阅读 · 0 评论 -
LeetCode168Excel表列名称
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:输入: 1输出: "A"示例 2:输入: 28输出: "AB"示例 3:...原创 2018-11-23 15:57:38 · 139 阅读 · 0 评论 -
LeetCode206反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *n...原创 2018-11-26 10:34:33 · 110 阅读 · 0 评论 -
LeetCode14最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所原创 2018-11-26 11:28:03 · 92 阅读 · 0 评论 -
LeetCode7整数反转
C语言版:int reverse(int x) { int n; int val = 0; while(x){ n = x % 10; x /= 10; //防止数据溢出 if (val > INT_MAX/10 || (val == INT_MAX / 10 && n > ...原创 2018-11-22 10:12:37 · 98 阅读 · 0 评论 -
LeetCode344反转字符串
编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A"char* reverseString(char* s) { int len = strlen(s); ...原创 2018-11-23 16:41:04 · 91 阅读 · 0 评论 -
LeetCode203移除链表元素C语言版
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* removeElements(struct ListNode* head, int val) { struct Lis...原创 2018-11-20 22:25:35 · 503 阅读 · 0 评论 -
Leetcode26删除排序数组中的重复项
int removeDuplicates(int* nums, int numsSize) { //用一个整数记录取值不同的数值个数 if (numsSize == 0) return 0; int number = 0; for(int i = 0; i < numsSize; i++) { if(nums[i] != nums[n...原创 2018-11-20 22:27:33 · 74 阅读 · 0 评论 -
LeetCode278第一个错误的版本
// Forward declaration of isBadVersion API.bool isBadVersion(int version);int firstBadVersion(int n) { //要减少调用api应快速查找,采用二分法 int left, right, mid; left = 1; right = n; while(le...原创 2018-11-21 10:30:21 · 330 阅读 · 0 评论 -
LeetCode374猜数字大小
# The guess API is already defined for you.# @param num, your guess# @return -1 if my number is lower, 1 if my number is higher, otherwise return 0# def guess(num):class Solution(object): de...原创 2018-11-21 10:52:24 · 113 阅读 · 0 评论 -
LeetCode66加一-C语言
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321...原创 2018-12-17 16:28:35 · 416 阅读 · 0 评论 -
LeetCode53最大子序和
int maxSubArray(int* nums, int numsSize) { if(numsSize == 1) //数组中只有一个数时返回第一个数 return nums[0]; int i = 0; int max = nums[0]; int sum = 0; for(i; i < numsSize; i++...原创 2018-11-21 14:23:12 · 87 阅读 · 0 评论 -
LeetCode121买卖股票的最佳时机-C语言、Python
方法一:直接遍历,时间复杂度为O(n^2)int maxProfit(int* prices, int pricesSize) { //直接遍历 int max = 0; int i,j; for(i = 0; i < pricesSize - 1; i++) for(j = i+1; j < pricesSize; j+...原创 2018-11-21 14:32:06 · 153 阅读 · 0 评论 -
LeetCode122买卖股票的最佳时机 II-C语言、Python
A+B+C 的和等于差值 D 所对应的连续峰和谷的高度之差。C语言版:int maxProfit(int* prices, int pricesSize) { int i; int profit = 0; for(i = 0; i < pricesSize - 1; i++){ if(prices[i] < prices[i + 1...原创 2018-11-21 15:10:13 · 140 阅读 · 0 评论