文章目录
- leetcode1 两数之和
- leetcode7 翻转整数
- leetcode9 回文数字
- leetcode13 罗马数字转整数
- leetcode14 最长共同前缀
- leetcode20 有效的括号
- leetcode21 混合插入有序链表
- leetcode26 有序数组中去掉重复项
- leetcode 28 实现strStr()
- leetcode 35 搜索插入位置
- leetcode 38 报数
- leetcode53 最大子数组
- leetcode58 最后一个单词的长度
- leetcode 66 加一
- leetcode67 二进制求和
- leetcode69 x的平方根
- leetcode70 爬楼梯
- leetcode83 删除排序链表中的重复元素
- leetcode88 合并两个有序数组
- leetcode100 相同的树
- leetcode101 判断对称树
- leetcode104 二叉树的最大深度
- leetcode107 二叉树的层次遍历
- leetcode108 将有序数组转换为二叉搜索树
- leetcode110 平衡二叉树
- leetcode111 二叉树的最小深度
- leetcode112 二叉树的路径和
- leetcode118 杨辉三角
- leetcode119 杨辉三角II
leetcode1 两数之和
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap={
}
for index,num in enumerate(nums):
hashmap[num]=index
for i,num in enumerate(nums):
j=hashmap.get(target-num)
if j is not None and i!=j:
return [i,j]
leetcode7 翻转整数
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
class Solution:
def reverse(self, x: int) -> int:
s=str(x)[::-1].rstrip('-')
if int(s)<2**31:
if x>=0:
return int(s)
else:
return 0-int(s)
return 0
leetcode9 回文数字
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
Input: 121
Output: true
Example 2:
Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:
Coud you solve it without converting the integer to a string?
class Solution:
def isPalindrome(self, x: int) -> bool:
y=str(x)[::-1]
if str(x)==y:
return True
else:
return False
leetcode13 罗马数字转整数
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
For example, two is written as II in Roman numeral, just two one’s added together. Twelve is written as, XII, which is simply X+ II. The number twenty seven is written as XXVII, which is XX + V + II.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:
I can be placed before V (5) and X(10) to make 4 and 9.
X can be placed before L (50) and C (100) to make 40 and 90.
C can be placed before D (500) and M (1000) to make 400 and 900.
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.
Example 1:
Input: “III”
Output: 3
Example 2:
Input: “IV”
Output: 4
Example 3:
Input: “IX”
Output: 9
Example 4:
Input: “LVIII”
Output: 58
Explanation: L = 50, V= 5, III = 3.
Example 5:
Input: “MCMXCIV”
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
class Solution:
def romanToInt(self, s: str) -> int:
d={
"M":1000,"D":500,"C":100,"L":50,"X":10,"V":5,"I":1}
res=0
for i in range(len(s)-1):
res=res-d[s[i]] if d[s[i]]<d[s[i+1]] else res+d[s[i]]
return res+d[s[-1]]
leetcode14 最长共同前缀
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string “”.
Example 1:
Input: [“flower”,“flow”,“flight”]
Output: “fl”
Example 2:
Input: [“dog”,“racecar”,“car”]
Output: “”
Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters a-z.
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs:
return ""
s1=min(strs)
s2=max(strs)
for i,x in enumerate(s1):
if x!=s2[i]:
return s2[:i]
return s1
leetcode20 有效的括号
Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: “()”
Output: true
Example 2:
Input: “()[]{}”
Output: true
Example 3:
Input: “(]”
Output: false
Example 4:
Input: “([)]”
Output: false
Example 5:
Input: “{[]}”
Output: true
class