Algorithms
求兵
这个作者很懒,什么都没留下…
展开
-
两数之和
给定一个数组和一个整数,返回数组中两数之和等于目标整数的下标。假定每种输入只有一个输出,数组中每个元素只能使用一次。举例:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].python实现1:暴力法(简单遍历),时间复杂度o(n^2)...原创 2018-08-16 09:51:45 · 133 阅读 · 0 评论 -
Python实现“反转整数”的两种方法
个人博客:https://sulenn.github.io/ 给定一个32位的符号整数,返回它的反转整数Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21假设该整数的大小范围为:,如果反转整数溢出,就返回0。1...原创 2018-08-17 19:20:10 · 37770 阅读 · 4 评论 -
“回文数”用python实现的四种方法
个人博客:https://sulenn.github.io/ 回文数就是指整数倒过来和原整数相等。Example 1:Input: 121Output: trueExample 2:Input: -121Output: falseExplanation: From left to right, it reads -121. From right to left,...原创 2018-08-17 11:01:11 · 54548 阅读 · 5 评论 -
python实现“罗马数字转整数”的两种方法
罗马数字由7个符号表示:I, V, X, L, C, D 和 MSymbol ValueI 1V 5X 10L 50C 100D 500M 1000例如罗马数字II指两个1相加。12表示为XII,...原创 2018-08-17 19:17:24 · 6066 阅读 · 1 评论 -
Python、java、go实现“最长公共前缀”的几种方法
找出字符串数组中最长的公共字符前缀如果,没有公共字符前缀的话就返回空字符串""Example 1:Input: ["flower","flow","flight"]Output: "fl"Example 2:Input: ["dog","racecar","car"]Output: ""Explanation: There is no common prefix ...原创 2018-08-21 11:09:40 · 619 阅读 · 0 评论 -
Python实现"移除元素"的三种方法
给定一个数组nums和值val,删除数组nums中和val相等的元素,返回新数组的长度不能分配额外的数组空间,只能用O(1)的空间完成本题数组中元素的顺序可以改变函数中数组长度L可以超过函数返回长度RL,只需要保证数组前RL个元素和val不相等即可Example 1:Given nums = [3,2,2,3], val = 3,Your function should...原创 2018-08-28 11:07:57 · 3477 阅读 · 0 评论 -
Python实现"删除排序数组中的重复项"的两种方法
对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度注意:不能为新数组申请额外的空间,只允许申请O(1)的额外空间修改输入数组Example 1:Given nums = [1,1,2],Your function should return length = 2, with the first two elements of nums ...原创 2018-08-28 10:33:34 · 6415 阅读 · 1 评论 -
Python实现“合并两个有序链表”的两种方法
合并两个有序链表,并返回一个新的链表。新链表由前两个链表拼接而成。Example:Input: 1->2->4, 1->3->4Output: 1->1->2->3->4->41:将l2链表中的结点一个一个的单独插入l1链表中# Definition for singly-linked list.# class L...原创 2018-08-27 19:21:30 · 6594 阅读 · 0 评论 -
Python实现“有效的括号”的两种方法
给定包含'(', ')', '{', '}', '['和']'字符的字符串,判断该字符串是否有效字符串是否有效:1、开括号对应同类型的闭括号2、按开括号顺序匹配闭括号注意:空字符串有效Example 1:Input: "()"Output: trueExample 2:Input: "()[]{}"Output: trueExample 3:...原创 2018-08-23 11:01:04 · 5532 阅读 · 0 评论 -
Python、java、go实现"strStr()"的几种方法
实现strStr()输入haystack和needle两个字符串,返回haystack中第一次出现needle字符串的索引下标。如果不存在,返回-1Example 1:Input: haystack = "hello", needle = "ll"Output: 2Example 2:Input: haystack = "aaaaa", needle = "bba"...原创 2018-08-28 14:28:20 · 940 阅读 · 0 评论 -
Python实现"最后一个单词的长度"的三种方法
给定一个由大小写单词加空格" "组成的的字符串,返回字符串中最后一个单词的长度如果不存在最后一个单词,就返回0注意:单词只由非空字母组成Example:Input: "Hello World"Output: 51:利用string.split(str="", num=string.count(str)) - 以 str 为分隔符切片 string,如果 num有指定值...原创 2018-08-31 09:47:19 · 6814 阅读 · 0 评论 -
Python实现"加一"的两种方法
给定一个非空的数值数组代表一个非负整数,对整数进行加一操作整数最高位存放在数组头位,数组中每一个元素都代表一个数字你可以认为整数不以0开头,除了数字0以外Example 1:Input: [1,2,3]Output: [1,2,4]Explanation: The array represents the integer 123.Example 2:Input:...原创 2018-08-31 16:34:00 · 25883 阅读 · 0 评论 -
Python、java、go实现"搜索插入位置"的几种方法
给定一个有序数组和一个目标值,如果数组中有目标值就返回对应索引,如果没有就返回按序插入目标值的下标假设数组中不存在重复值Example 1:Input: [1,3,5,6], 5Output: 2Example 2:Input: [1,3,5,6], 2Output: 1Example 3:Input: [1,3,5,6], 7Output: 4...原创 2018-08-28 15:17:57 · 325 阅读 · 0 评论 -
Python实现"报数"的两种方法
报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("原创 2018-08-28 16:33:02 · 4239 阅读 · 0 评论 -
Python实现"二进制求和"的四种方法
个人博客:https://sulenn.github.io/ 给定两个二进制字符串,返回它们的和(也是二进制字符串)输入字符串都是非空的,并且只包含'0'和'1'字符Example 1:Input: a = "11", b = "1"Output: "100"Example 2:Input: a = "1010", b = "1011"Output: "101.原创 2018-09-01 22:46:20 · 21719 阅读 · 0 评论 -
Python实现"二叉树的最大深度"的两种方法
给定一棵二叉树,返回它的最大深度最大深度是指树中最长路径所拥有的结点数量注意:叶子节点没有子节点例如:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7它的返回值为31:从上到下按层级遍历二叉树,有多少层即二叉树有多深(方法类似:二叉树的层次遍历||https://mp.csdn.ne...原创 2018-09-04 13:09:55 · 5680 阅读 · 0 评论 -
Python实现"将有序数组转换为二叉搜索树"的一种方法
给定一个按升序排列的整数数组,将它转换为平衡二叉搜索树本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1Example:Given the sorted array: [-10,-3,0,5,9],One possible answer is: [0,-3,9,-10,null,5], which represents the follo...原创 2018-09-04 18:48:40 · 1007 阅读 · 0 评论 -
Python实现"平衡二叉树"的一种方法
判断给定的二叉树是不是平衡二叉树本文体中,高平衡二叉树定义为:二叉树中任意结点的左右子树深度差不超过1Example 1:Given the following tree [3,9,20,null,null,15,7]: 3 / \ 9 20 / \ 15 7Return true.Example 2:Given the follo...原创 2018-09-04 23:18:20 · 1712 阅读 · 0 评论 -
Python、java、go实现"最大子序和"的几种方法
对于给定的整数数组nums,找出该数组中累加和最大的连续整数串,并返回其最大和Example:Input: [-2,1,-3,4,-1,2,1,-5,4],Output: 6Explanation:[4,-1,2,1] has the largest sum = 6.进阶:如果已经实现时间复杂度为O(n)的解决方法,可以尝试用更为精妙的分治法解决该问题1:动态规划...原创 2018-09-04 18:52:35 · 612 阅读 · 0 评论 -
Python实现"x的平方根"的两种方法
个人博客:https://sulenn.github.io/ 实现int sqrt(int x)计算并返回x的平方根,x为非负整数返回向下取整的整数(不包含小数点)Example 1:Input: 4Output: 2Example 2:Input: 8Output: 2Explanation: The square root of 8 is 2.82...原创 2018-09-02 10:03:14 · 15686 阅读 · 2 评论 -
Python实现"爬楼梯"的方法
你需要攀爬一个有n个台阶的梯子每一次你只能走1步或者两步,计算有多少中不同的登顶方式注意:n必为正整数Example 1:Input: 2Output: 2Explanation: There are two ways to climb to the top.1. 1 step + 1 step2. 2 stepsExample 2:Input: 3Out...原创 2018-09-02 10:34:13 · 10574 阅读 · 0 评论 -
Python实现"删除排序链表中的重复元素"的两种方法
给定一个有序链表,删除重复元素,保证每一个元素只出现一次Example 1:Input: 1->1->2Output: 1->2Example 2:Input: 1->1->2->3->3Output: 1->2->31:时间复杂度O(n),借助另外一个链表def deleteDuplicates(se...原创 2018-09-02 13:16:11 · 3170 阅读 · 3 评论 -
Python实现"相同的树"的三种方法
给定两颗二叉树,判断它们是否相同如果两棵树的结构和对应结点的值均相等,就认为它们是相同的树Example 1:Input: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]Output: trueExample 2:Input: ...原创 2018-09-02 20:07:38 · 910 阅读 · 0 评论 -
Python实现"合并两个有序数组"的三种方法
给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1,注意: 数组nums1和nums2初始化元素个数分别为m和n 假设num1有足够空间(长度超过m+n或与其相等)保存nums2中所有的元素Example:Input:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2...原创 2018-09-02 21:44:42 · 10407 阅读 · 1 评论 -
Python实现"对称二叉树"的两种方法
给定一棵二叉树,检测它是否中心对称例如,二叉树[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注意:如果你能用递归和迭代解决这个题会很加分1:递归,解决方式和...原创 2018-09-04 07:20:12 · 1401 阅读 · 0 评论 -
Python实现"两数之和 || - 输入有序数组"的两种方法
给定一个已经按升序排好的整数有序数组,找到该数组中累加等于目标值的两个整数函数twoSum返回两个整数在数组中的索引,且第一个索引Index1应该小于第二个索引Index2注意:返回的结果(包括index1和index2)都是从1开始的你可以认为每一个输入只对应唯一一个正确答案,同一个元素不能使用两次Example:Input: numbers = [2,7,11,15...原创 2018-09-11 15:46:40 · 820 阅读 · 0 评论 -
Python实现"只出现一次的数字"的三种方法
给定一个非空的整数数组,该数组中除了一个数字只出现一次以外,剩余的数字都会出现两次,返回只出现一次的数字注意:你的算法应该只有线性的运行时间复杂度。你可以不用额外空间实现它么?Example 1:Input: [2,2,1]Output: 1Example 2:Input: [4,1,2,1,2]Output: 41:利用list.pop()+list.re...原创 2018-09-08 09:19:16 · 9801 阅读 · 0 评论 -
Python实现"二叉树的最小深度"的两种方法
找到给定二叉树的最小深度最小深度是从根节点到最近叶子节点的最短路径上的节点数量注意:叶子节点没有子树Example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7return its minimum depth = 2.1:算法遍历二叉树每一层,一...原创 2018-09-05 12:23:14 · 1357 阅读 · 0 评论 -
Python实现"Excel表列名称"的两种方法
给定一个正整数,返回它在excel表中出现的对应列名称For example: 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...Example 1:Input: 1Output: "A"Example 2...原创 2018-09-11 18:32:52 · 7805 阅读 · 0 评论 -
Python实现"求众数"的三种方法
给定一个长度为n的数组,返回众数。众数是指数组中出现次数超过n/2次的元素假设数组非空,众数一定存在Example 1:Input: [3,2,3]Output: 3Example 2:Input: [2,2,1,1,1,2,2]Output: 21:字典,累记数组中出现的各元素的次数,一旦发现超过n/2次的元素就返回该元素def majorityEle...原创 2018-09-11 22:23:13 · 33633 阅读 · 4 评论 -
Python实现"环形链表"的一种方法
判断给定的链表中是否有环(不一定是首尾相连)注意:尽量不要申请额外空间1:O(n)时间复杂度(参考:https://www.cnblogs.com/hiddenfox/p/3408931.html)复杂度O(n)的方法,使用两个指针slow,fast。两个指针都从表头开始走,slow每次走一步,fast每次走两步,如果fast遇到null,则说明没有环,返回false;如果slow...原创 2018-09-08 22:47:15 · 1786 阅读 · 0 评论 -
Python实现"路径总和"的三种方法
给定一棵二叉树和一个总数,判断树中是否存在从根结点到叶子节点的累加值等于该给定的总数注意:叶子节点没有子树Example:Given the below binary tree and sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \7 2 1return tr...原创 2018-09-05 22:54:51 · 1950 阅读 · 0 评论 -
Python实现"Excel表列序号"的一种方法
给定一个出现在Excel表中的列标题,返回它对应的列数字For example: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...Example 1:Input: "A"Output: 1Example 2:...原创 2018-09-11 23:24:24 · 4513 阅读 · 0 评论 -
Python实现"二叉树的层次遍历||"的一种方法
给定一棵二叉树,返回从上到下按层级顺序遍历结点的值(例如,从叶子节点的层级到根结点的层级)例如:二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它从下到上按层级顺序遍历的结果为:[ [15,7], [9,20], [3]]1:从上到下按层级遍历二叉树def ...原创 2018-09-03 18:50:16 · 957 阅读 · 0 评论 -
Python实现"买卖股票的最佳时机||"的一种方法
给定一个数组,数组中的元素表示股价,第几个元素就代表第几天的股价设计算法来获得最大的利润,可以进行多次交易(买卖股票多次)注意:同一时间内不能重复交易(卖股票之后必须先买股票)Example 1:Input: [7,1,5,3,6,4]Output: 7Explanation: Buy on day 2 (price = 1) and sell on day 3 (pric...原创 2018-09-09 18:34:17 · 1176 阅读 · 0 评论 -
Python实现"最小栈"的两种方法
设计一个栈,该栈可以进行push、pop、top和在常数时间内检索最小值的操作push(x) -- 压一个数到栈顶 pop() -- 移除栈顶的元素,不返回任何对象 top() -- 返回栈顶端的元素 getMin() -- 检索栈中的最小值 Example:MinStack minStack = new MinStack();minStack.push(-2);minSt...原创 2018-09-09 22:21:49 · 1564 阅读 · 1 评论 -
Python实现"杨辉三角"的三种方法
给定一个非负整数numRows,生成杨辉三角的前numRows行在杨辉三角中,每个数是它左上方和右上方的数的和 Example:Input: 5Output:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]1:根据numRows的大小简单迭代def generate(self, num...原创 2018-09-06 13:17:09 · 60448 阅读 · 10 评论 -
Python实现"阶乘后的零"的一种方法
给定一个整数n,返回n!尾部0的个数Example 1:Input: 3Output: 0Explanation: 3! = 6, no trailing zero.Example 2:Input: 5Output: 1Explanation: 5! = 120, one trailing zero.1:数学解法(参考:http://bookshadow.com...原创 2018-09-12 12:31:00 · 464 阅读 · 0 评论 -
Python实现"杨辉三角||"的两种方法
给定一个非负整数k(k<=33),返回杨辉三角的第k行注意:返回行从0开始在杨辉三角中,每个数是它左上方和右上方的数的和 Example:Input: 3Output: [1,3,3,1]进阶:你可以优化你的算法到O(k)的空间复杂度么?1:zip()加sum()的方法def getRow(self, rowIndex): """...原创 2018-09-06 19:20:52 · 947 阅读 · 0 评论 -
Python实现"买卖股票的最佳时机"的一种方法
给定一个数组,该数组中第i个元素是某个股票第i天的价钱如果最多只能完成一次交易(买入股票,卖出股票),设计一个算法,可以获得最大的利润注意:在你买入股票之前不能卖出股票Example 1:Input: [7,1,5,3,6,4]Output: 5Explanation: Buy on day 2 (price = 1) and sell on day 5 (price =...原创 2018-09-09 16:44:38 · 2520 阅读 · 0 评论