LeetCode_CC150
  • Introduction
  • LeetCode
    • Single Number
    • Contains Duplicate
    • Happy Number
    • Valid Anagram
    • Contains Duplicate II
    • Count Primes
    • Isomorphic Strings
    • Word Pattern
    • Island Perimeter
    • Find the Difference
    • Palindrome Permutation
    • Two Sum III - Data structure design
    • Number of Boomerangs
    • Longest Palindrome
    • Logger Rate Limiter
    • Find All Anagrams in a String
    • Keyboard Row
    • Distribute Candies
    • Shortest Word Distance
    • Majority Element
    • Plus One
    • Best Time to Buy and Sell Stock
    • Best Time to Buy and Sell Stock II
    • Pascal's Triangle
    • Remove Element
    • Rotate Array
    • Pascal's Triangle II
    • Two Sum II - Input array is sorted
    • Third Maximum Number
    • Max Consecutive Ones
    • K-diff Pairs in an Array
    • Maximum Product of Three Numbers
    • Maximum Distance in Arrays
    • Shortest Unsorted Continuous Subarray
    • Roman to Integer
    • Count and Say
    • Valid Parentheses
    • Longest Common Prefix
    • Valid Palindrome
    • Length of Last Word
    • Repeated Substring Pattern
    • Number of Segments in a String
    • Valid Word Abbreviation
    • Longest Uncommon Subsequence I
    • Student Attendance Record I
    • Reverse Words in a String III
    • Arranging Coins
    • Guess Number Higher or Lower
    • Search Insert Position
    • Min Stack
    • Diameter of Binary Tree
    • Unique Binary Search Trees
    • Unique Binary Search Trees II
    • Binary Tree Zigzag Level Order Traversal
    • Nim Game
    • Add Digits
    • Fizz Buzz
    • Climbing Stairs
    • Array Partition I
    • Power of Three
    • Power of Four
    • Power of Two
    • Ugly Number
    • Find All Numbers Disappeared in an Array
    • Find All Duplicates in an Array
    • Minimum Moves to Equal Array Elements
    • Meeting Rooms
    • Subsets
    • Subsets II
    • Count Complete Tree Nodes
    • Minimum Size Subarray Sum
    • Maximum Size Subarray Sum Equals k
    • Sparse Matrix Multiplication
    • Meeting Rooms II
    • Letter Combinations of a Phone Number
    • Binary Tree Vertical Order Traversal
    • Find the Celebrity
    • Merge Intervals
    • One Edit Distance
    • Multiply Strings
  • Array&String
    • Subarray Sum
    • Maximum Subarray
    • Intersection of Two Arrays
    • Intersection of Two Arrays II
    • Partition List
    • Merge Sorted Array
    • Two Sum
    • 3Sum
    • Product of Array Except Self
    • Rotate Image
    • Spiral Matrix
  • Linked List
    • Merge Two Sorted Lists
    • Insert into a Cyclic Sorted List
    • Sort List
    • Linked List Cycle
    • Copy List with Random Pointer
    • Add Two Numbers
    • Delete Node in a Linked List
    • Reverse Linked List
    • Odd Even Linked List
    • Intersection of Two Linked Lists
    • Palindrome Linked List
    • Insertion Sort List
    • Remove Linked List Elements
    • Remove Duplicates from Sorted List
    • Swap Nodes in Pairs
    • Remove Nth Node From End of List
  • Binary Search
    • Missing Number
    • Valid Perfect Square
    • 744. Find Smallest Letter Greater Than Target
    • Sqrt(x)
    • First Bad Version
    • Pow(x, n)
    • Find the Duplicate Number
    • Find Minimum in Rotated Sorted Array
    • Find Minimum in Rotated Sorted Array II
    • Total Occurrence of Target
    • Search in a Big Sorted Array
    • Longest Increasing Subsequence
    • Find Peak Element
    • Search in Rotated Sorted Array
    • Search a 2D Matrix
    • Search a 2D Matrix II
    • Closest Number in Sorted Array
    • Search in Rotated Sorted Array II
    • Search for a Range
    • Maximum Number in Mountain Sequence
    • Last Position of Target
    • K Closest Numbers In Sorted Array
    • Sqrt(x) II
  • Binary Tree
    • Maximum Depth of Binary Tree
    • Invert Binary Tree
    • Same Tree
    • Binary Tree Paths
    • Lowest Common Ancestor of a Binary Search Tree
    • Balanced Binary Tree
    • Convert Sorted Array to Binary Search Tree
    • Symmetric Tree
    • Path Sum
    • Minimum Depth of Binary Tree
    • Binary Tree Preorder Traversal
    • Binary Tree Inorder Traversal
    • Binary Tree Level Order Traversal
    • Binary Tree Level Order Traversal II
    • Minimum Subtree
    • Flatten Binary Tree to Linked List
    • Binary Tree Longest Consecutive Sequence
    • Subtree with Maximum Average
    • Number of Islands
    • Serialize and Deserialize Binary Tree
    • Clone Graph
  • Data Structure
    • Hash Table
    • Bubble Sort
    • Selection Sort
    • Binary Search
    • Merge Sort
    • Binary Tree
    • 递归
    • DFS BFS
    • python技巧
  • two pointers
    • Reverse Vowels of a String
    • Reverse String
    • Remove Duplicates from Sorted Array
    • LeetCode 11. Container With Most Water
    • Strobogrammatic Number
    • Move Zeroes
    • Implement strStr()
  • 哈希表
    • Ransom Note
    • Minimum Index Sum of Two Lists
    • Longest Harmonious Subsequence
    • Untitled
Powered by GitBook
On this page

Was this helpful?

  1. Data Structure

python技巧

  • 排序

用lst.sort() 而不是nlst = sorted(lst)

区别在于lst.sort()是 in-place sort,改变lst, sorted会创建新list,成本比较高。

  • 用xrange

xrangge 和 range的区别是在于 range会产生list存在memory中,xrange更像是生成器,generate on demand

所以有的时候xrange会更快

  • 三目运算符

python 的三目运算符是这么写的 x if y else z

考虑这种list of list: matrix = [ [1,2,3] , [4,5,6] ]

row = len(matrix)

col = len(matrix[0]) if row else 0

这样写通用的原因是, 当matrix = [], row = 0, col =0

  • list 填 0

lst = [0 for i in range(3)] # lst = [0,0,0]

lst = [[0 for i in range(3)] for j in range(2)] # lst = [[0, 0, 0], [0, 0, 0]]

下面这种写法危险:

lst1 = [ 0, 0, 0 ]

lst2 = [lst1] * 2 # lst2 = [ [0,0,0] , [0,0,0] ]

lst2[0][0] = 1 # lst2 = [ [1,0,0], [1,0,0]]

因为lst1是object,这样写会踩坑

  • D.get(key, default)

如果这个key 没有在dict里面,给它一个默认值:

D = {}

if 1 in D:

val = D[1]

else :

val = 0

等同于这样写:

val = D.get(1, 0)

  • reverse list

lst = [1,2,3]

print lst[::-1] #[3,2,1]

lst 也有reverse函数

这也也适用于str, str可是没有reverse 函数的,str[::-1] 可用 √

=================进阶一下=====================

Python 也是有自己的数据结构的!!!!

  • deque

    还在用list来做queue么? deque,当求快queue的时候,你值得拥有

  • Counter

    Counter做啥就顾名思义了

  • yield

    用yield不用return ( 我也还在学习阶段

import collections就可以用了,参见

===============举个当时我就震惊了的例子===============

看到在stackoverflow上看到有人求这样一个数据结构:

  • Close to

    O(1) performance

    for as many of the following four operations.

  • Maintaining

    sorted order while inserting

    an object into the container.

  • Ability to

    peek at last value

    (the largest value) contained in the object.

  • Allowing for

    pops on both sides

    (getting the smallest or largest values).

  • Capability of

    getting the total size

    or number of objects being stored.

  • Being a

    ready made solution

    like the code in Python's standard library.

然后真的可以implement出来

  1. import collections

  2. import bisect

    1. class FastTable:

    1. def __init__(self):

  3. self.__deque = collections.deque()

    1. def __len__(self):

  4. return len(self.__deque)

    1. def head(self):

  5. return self.__deque.popleft()

    1. def tail(self):

  6. return self.__deque.pop()

    1. def peek(self):

  7. return self.__deque[-1]

    1. def insert(self, obj):

  8. index = bisect.bisect_left(self.__deque, obj)

  9. self.__deque.rotate(-index)

  10. self.__deque.appendleft(obj)

  11. self.__deque.rotate(index)

复制代码

对此我只想表示牛,并且我硬生生的用它来解过人家不是要这种思路的题目。

有想到的再补充,也欢迎任何技巧分享

补充内容 (2016-10-28 00:40):

Python有built-inheap,是min heap. heapq,如何来用它实现max heap呢,看到过一个有意思的方法是把key取负,比如把100变成-100,5变成-5。

PreviousDFS BFSNextReverse Vowels of a String

Last updated 5 years ago

Was this helpful?

collections — High-performance container datatypes
Anyone know this Python data structure?