自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 [leetcode]#190. Reverse Bits

题目翻译翻转一个给定的32位无符号数的位。比如,给定输入整数43261596(二进制表示为00000010100101000001111010011100),返回964176192(二进制表示为00111001011110000010100101000000)。 进一步:如果该函数被多次调用,你该如何优化它?思路方法思路一先将输入转换成2进制字符串,再翻转并扩充到32位,再将此32位的二进

2017-11-29 17:31:13 242

原创 [leetcode]#189. Rotate Array

题目大意: 将包含n个元素的数组向右旋转k步 例如,数组[1,2,3,4,5,6,7]包含元素个数n = 7,向右旋转k = 3步,得到[5,6,7,1,2,3,4]。 至少有3种不同的解题方法,最好使用O(1)的额外空间,“就地”完成数组旋转。时间复杂度O(n),空间复杂度O(n)class Solution(object): def rotate(self, nums, k):

2017-11-29 13:50:10 286

原创 [leetcode]#172. Factorial Trailing Zeroes

题目翻译 给定一个整数n,返回n!尾部0的个数。你的解法的时间复杂度要控制在O(logn)。思路方法 所有的尾部的0可以看做都是2*5得来的,所以通过计算所有的因子中2和5的个数就可以知道尾部0的个数。实际上,2的个数肯定是足够的,所以只需计算5的个数即可。 要注意,25=5*5是有两个5的因子;125=5*5*5有3个5的因子。比如,计算135!末尾0的个数。 首先135/5 = 2

2017-11-28 15:44:49 233

原创 [leetcode]#169. Majority Element

题目翻译 给定一个大小为n的数组,找到其中的“多数元素”。多数元素指的是出现次数超过 ⌊ n/2 ⌋ 次的元素。 假定数组非空,且给定的数组中一定存在多数元素。思路方法 (Sort)先对数组进行排序,因为多数元素一定存在,且个数超过总个数的一半,那么排序后最中间的那个元素一定是多数元素。class Solution(object): def majorityElement(sel

2017-11-28 15:40:38 226

原创 [leetcode]#168. Excel Sheet Column Title

题目翻译 给定一个正整数,返回其在Excel表格中作为列序号时对应的列标题。比如: 1 -> A 2 -> B 3 -> C … 26 -> Z 27 -> AA 28 -> AB思路方法 首先,我们要知道Excel里这个对应关系是什么样的。从A-Z对应1-26,当列标题进一位变成AA时,列对应的数字变成27。所以这个题本质上是一个10进制转26进制的问题,不过A对

2017-11-28 15:30:48 252

原创 [leetcode]#167. Two Sum II - Input array is sorted

题目:Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2思路方法注意题目说了两个重要条件:1,有序数组;2,有唯一解。所以解的两个数一定都是数组中唯一存在的数。思路一利用两个指针从数组的两侧开始向中间移动,寻找第一对和为target的两个数即为所求。class Solution(object): d

2017-11-28 15:19:37 212

原创 [leetcode]#160. Intersection of Two Linked Lists

题目:写一个程序,找到两个单链表交汇的节点。比如,下面两个单链表交汇节点是c1:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3注意:1,如果两个单链表不交,返回nul

2017-11-28 09:17:39 224

原创 [leetcode]#121+122. Best Time to Buy and Sell Stock

我们先拿出来前三道题,因为他们都是array中的题目。这是leetcode种经典的一系列题,涉及到动态规划和贪心算法。按照我的理解,贪心是满足当前条件的最优值我们就将它最为最优解,也就是大家说的局部最优值,而动态规划是要记录下来达到当前最优解的所有途径,由局部一步步得到全局最优。这几道题都是给你一个股票每日价格表,让你得到不同条件下能挣的最多的钱。121题是只允许买卖一次,要保证卖的时间晚于买的

2017-11-27 20:48:45 254

原创 [leetcode]#119. Pascal's Triangle II

跟上一题一样,只是返回的值是指定的某一行 For example, given k = 3, Return [1,3,3,1].class Solution: # @return a list of integers def getRow(self, rowIndex): rownum=rowIndex+1 currow=[1]

2017-11-27 20:22:37 199

原创 [leetcode]#118. Pascal's Triangle

题意:每一层的第i个位置,等于上一层第i-1与第i个位置之和。[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] class Solution: # @return a list of lists of integers def generate(self, numRows): ret = []

2017-11-27 20:14:20 135

原创 [leetcode]#141. Linked List Cycle

题目翻译 给定一个链表,判断其中是否有环。 进一步:你能在不使用额外空间的情况下解决吗?倘若不考虑进一步的要求。顺序遍历链表所有节点,若出现重复访问则说明有环,否则说明无环。这里注意不能用list保存访问过的节点,查找太慢了;用dict保存还要考虑到键不能是对象,所以这里采取以对象的id作为键的做法# Definition for singly-linked list.# class Li

2017-11-27 13:43:40 396

原创 [leetcode]#112. Path Sum

判断是否存在一条路径,从root-leaf的路径,使得路径的value的和等于sum# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.r

2017-11-23 20:27:54 182

原创 [leetcode]#203. Remove Linked List Elements

题目翻译 删除单链表中值为给定的val的节点。比如:给定链表 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6 和值 val = 6 ,返回 1 –> 2 –> 3 –> 4 –> 5 。思路方法 遍历所有节点,同时保留每个节点的上一个节点,当遇到节点值是val时,删除该节点。为了方便操作,定义了一个伪头节点。# Definition for singly-linked lis

2017-11-23 20:24:16 166

原创 [leetcode]#107. Binary Tree Level Order Traversal II

给定一个二叉树,返回其从下到上的层序遍历(从左到右,从下到上)。用栈来实现DFS,注意要在深搜的时候记录当前的深度。# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None

2017-11-22 11:22:14 160

原创 [leetcode]#111. Minimum Depth of Binary Tree

输入一个二叉树,输出leaf节点的最小深度解题思路:分几种情况考虑:1,树为空,则为0。 2,根节点如果只存在左子树或者只存在右子树,则返回值应为左子树或者右子树的(最小深度+1)。 3,如果根节点的左子树和右子树都存在,则返回值为(左右子树的最小深度的较小值+1)。# Definition for a binary tree node# class TreeNode:# def

2017-11-22 10:19:13 152

原创 [leetcode]#10. Balanced Binary Tree

题意:判断一颗二叉树是否是平衡二叉树。解题思路:在这道题里,平衡二叉树的定义是二叉树的任意节点的两颗子树之间的高度差小于等于1。这实际上是AVL树的定义。首先要写一个计算二叉树高度的函数,二叉树的高度定义为:树为空时,高度为0。然后递归求解:树的高度 = max(左子树高度,右子树高度)+1(根节点要算上)。高度计算函数实现后,递归求解每个节点的左右子树的高度差,如果有大于1的,则return F

2017-11-22 09:38:08 241

原创 [leetcode]#136. Single Number

题意分析:   给定一个数组,每个数都出现了2次,只有一个出现了一次,找出这个数。要求时间复杂度O(n),空间复杂度O(1)。题目思路:   这道题目利用位操作。位操作的异或(^),他的其中一个属性是,n^n = 0, 0^n = n。只要将所有的数都进行异或就得到出现一次的数。class Solution(object): def singleNumber(self, nums):

2017-11-21 16:15:03 153

原创 [leetcode]#67. Add Binary

题目翻译 给定两个二进制字符串,返回它们的和(也是二进制字符串)。 比如:a = “11”,b = “1”,返回 “100”。思路方法思路一 利用Python的进制转换函数,先将两个加数转成10进制,再把和转换成二进制返回即可。虽然速度还挺快的,但这么做忽略了可能的大整数相加的细节(因为Python帮你处理了)。>>bin(10) ‘0b1010’int(‘12’,16)

2017-11-21 15:28:32 644

原创 [leetcode]#66. Plus One

题目翻译 给定一个用数组表示的非负数,对这个数加一。这个数组里的数字最高位在列表头部思路方法 这个题目有点难理解,应该举个例子的。。。大概就是,比如: 数字1234用数组表示是[1,2,3,4],加一后数组表示为[1,2,3,5];数字9999用数组表示是[9,9,9,],加一得到[1,0,0,0,0]。实际上完全不用全部数字都做判断,小于等于8的数字加一后就可以终止了。从后向前扫描数

2017-11-21 13:42:18 160

原创 [leetcode]#108. Convert Sorted Array to Binary Search Tree

题意:将一个排序好的数组转换为一颗二叉查找树,这颗二叉查找树要求是平衡的。解题思路:由于要求二叉查找树是平衡的。所以我们可以选在数组的中间那个数当树根root,然后这个数左边的数组为左子树,右边的数组为右子树,分别递归产生左右子树就可以了# Definition for a binary tree node# class TreeNode:# def __init__(self,

2017-11-21 10:53:56 145

原创 [leetcode]#104. Maximum Depth of Binary Tree

返回树的最大深度递归遍历即可# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(o

2017-11-21 10:47:01 129

原创 [leetcode]#101. Symmetric Tree

判断二叉树是否为对称的。递归,对于每个节点,检查树的左右节点值是否相等,同时判断:左节点的左子树和右节点的右子树是否对称、右节点的左子树和左节点的右子树是否对称。# Definition for a binary tree node# class TreeNode:# def __init__(self, x):# self.val = x# s

2017-11-21 09:37:29 143

原创 [leetcode]#9. Palindrome Number

判断一个整数(integer)是否是回文不允许用额外空间,所以不能将数转换成字符串来判断。实际上将原数字反转一半就可以判断是否是回文了。另外,以0结尾的非零数都不是回文。class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool

2017-11-21 09:13:23 140

原创 [leetcode]#24. Swap Nodes in Pairs

题目:给一个链表,要求将链表的奇数个节点和它后边的节点进行互换,并且不能更改节点的值(也就是不能互换节点的值),空间复杂度要求为O(1)加一个头结点,操作起来会很方便class Solution: # @param {ListNode} head # @return {ListNode} def swapPairs(self, head):

2017-11-20 21:15:23 142

原创 [leetcode]#19. Remove Nth Node From End of List

题意:删除一个单向链表的倒数第 N 个节点直接模拟,先算出节点数,再找到节点删除加一个头结点dummy,并使用双指针p1和p2。p1先向前移动n个节点,然后p1和p2同时移动,当p1.next==None时,此时p2.next指的就是需要删除的节点。class Solution: # @return a ListNode def removeNthFromEnd(sel

2017-11-20 21:02:32 118

原创 [leetcode]#70. Climbing Stairs

题目翻译 你现在在爬楼梯,爬到顶要n阶。每次你可以爬1或2阶楼梯,你有多少种不同的爬法可以到顶?其实是斐波那契数列class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ pre = cur = 1

2017-11-20 19:09:18 151

原创 [leetcode]#69. Sqrt(x)

题目大意: 实现函数 int sqrt(int x). 计算并返回x的平方根(整型)解题思路: 题目并不要求计算sqrt(x)的精确值,只需返回小于等于sqrt(x)的最大整数即可。二分法class Solution(object): def mySqrt(self, x): """ :type x: int :rtype: int

2017-11-20 17:25:12 138

原创 [leetcode]#58. Length of Last Word

题目翻译 给定一个字符串s,只包含大小写字母和空格字符 ’ ‘,返回该字符串中最后一个单词的长度。如果不存在最后一个单词返回0。 注意:所谓单词,是指仅由非空格字符组成的字符序列。比如,给定s= “Hello World”,返回 5。思路方法 利用Python的内置函数string.rstrip()和string.split()。先将字符串后面的空格部分删除,再按照空格字符将剩余部分分成若

2017-11-20 17:10:23 141

原创 [leetcode]#53. Maximum Subarray

题目是说,给你一串数,有正有负 要求出最大的连续子串。 其实就是标准的动态规划问题: 随着遍历这个数组,在到每一个位置的时候,弄一个局部最大L值,代表以当前位置为结尾的最大子串,比如说我遍历到第i个,那么以第i个为结尾的最大子串就是我们要求的L。 比如这个题目: -2 , 1, −3,4,−1,2,1,−5,4 位置0,L=x=-2,没得选 位置1,要以x=1为结尾的最大的,那肯

2017-11-18 15:11:01 157

原创 [leetcode]#344. Reverse String

题目翻译 写一个函数,输入一个字符串,输出其反转字符串。 例如:输入“hello”,输出“olleh”。class Solution(object): def reverseString(self, s): """ :type s: str :rtype: str """ return s[::-1]

2017-11-17 20:50:29 164

原创 [leetcode]#88. Merge Sorted Array

题目翻译 给定两个有序整数数组nums1和nums2,将nums2合并到nums1中得到一个有序数组。 注意:假定nums1有足够的空间(其大小大于等于m+n)来存放nums2的元素。nums1和nums2初始时分别有m和n个元素。既然要合并到nums1中,则从合并后nums1的尾部元素开始,依次向前确定每个元素的值应该是多少。程序需要用到三个指针。不反悔任何值,只需要将原本的nums1变

2017-11-17 20:33:41 278

原创 [leetcode]#21. Merge Two Sorted Lists

按顺序拼接两个已排序的链表 class Solution(object): def mergeTwoLists(self, l1, l2): ret = ListNode(0) if l1 == None: return l2 if l2 == None: return l1 if

2017-11-17 20:30:05 129

原创 [leetcode]#83. Remove Duplicates from Sorted List

题意: Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.解题思路:链表节点的去重。比较简单。# Def

2017-11-17 14:44:28 146

原创 [leetcode]#100. Same Tree

题意:判断两棵树是否是同一棵树。解题思路:这题比较简单。用递归来做。首先判断两个根节点的值是否相同,如果相同,递归判断根的左右子树。一定要注意tab键的使用,否则老报indent的错误# Definition for a binary tree node# class TreeNode:# def __init__(self, x):# self.val = x

2017-11-17 14:32:30 108

原创 [leetcode]#38. Count and Say

题目翻译 一个”数和说(count and say)“序列是像这样的一个整数序列:1, 11, 21, 1211, 111221, …。 1 读作 “1个1” 或 11. 11 读作 “2个1” 或 21. 21 读作 “1个2,1个1” 或 1211. 给定整数n,生成第n个序列。 注意:整数序列用字符串表示。思路方法 这个问题重点首先是要读懂题目。然后在想这个过程的时候

2017-11-17 11:04:44 221

原创 [leetcode]#35. Search Insert Position

题意分析:  给定一个排好序的数组和一个target,如果target在数组里面,那么返回他的位置,否者返回他应该插入哪个位置。题目思路:  这也是一个标准的二分查找。如果没有找到,那么和first和last位置的数比较一下就可以得到答案。class Solution: # @param A, a list of integers # @param target, an inte

2017-11-17 10:22:54 175

原创 [leetcode]database_SQL

175. Combine Two TablesSELECT FirstName, LastName, City, StateFROM PersonLEFT JOIN AddressON Person.PersonId = Address.PersonId;176. Second Highest Salaryselect ( select distinct Salary from Salar

2017-11-17 10:20:46 286

原创 [leetcode]#28. Implement strStr()

题目翻译 实现 strStr() 函数。该函数用于判断一个字符串 needle 是否是另一个字符串 haystack 的子串。如果是,则该函数返回 needle 在 haystack 中首次出现的地址;否则,返回-1。扫描haystack,当遇到与needle首字符相同的位置时,检查haystack从该位置开始的与needle长度相同的块,与needle是否相同if not needle:

2017-11-17 09:34:05 127

原创 [leetcode]#14. Longest Common Prefix

题目翻译写个函数,找出一个字符串数组中所有字符串的最长公共前缀。 题目描述不清晰。。。补充几个例子,比如:{“a”,”a”,”b”} 返回 “” ,因为三个字符串没有公共前缀; {“a”, “a”} 返回 “a” 因为它是两个字符串的公共前缀; {“abca”, “abc”} 返回 “abc”; {“ac”, “ac”, “a”, “a”} 返回 “a”很直观的思路,从任意一个字符串开

2017-11-17 09:19:49 121

原创 [leetcode]#27. Remove Element

class Solution(object): def removeElement(self, nums, val): n = len(nums) i = 0 j = 0 for j in range(0, n): if nums[j] != val: nums[i] =

2017-11-16 16:53:24 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除