LeetCode
风与海的半神
为工作做准备!
展开
-
LeetCode-下一个数组
题目描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。例子:输入:nums = [1,2,3]输出:[1,3,2]题目解析乍一看题目都不懂具体意思。一步一步来分析,首先是字典序列,就是1,3,4,5,6……9,a,b,c……z(该题目中只包含数字)。学过排列组合的同学都知道,1,2,3的全排列有:12313221323131原创 2021-04-19 20:57:59 · 94 阅读 · 0 评论 -
LeetCode 数组-盛最多水的容器
题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。题目解析题目意思不难理解,最初的想法就是用暴力搜索,显然超时了,嘤。max_area = 0for i in range(len(height)): for j in range(i+1,len(h原创 2021-04-18 17:16:19 · 94 阅读 · 0 评论 -
LeetCode 电话号码的字母组合
题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。题目解析看到这个题目感觉应该用动态规划做(其实也不用动归,回溯就行,但是回溯的写法已经忘得差不多了),所以我自己就用空间换时间的方法来做。代码如下#!/usr/bin/python3# -*- coding:utf-8 -*-# 电话号码的字母组合class Solution: def combine(self,l原创 2021-04-16 21:35:48 · 81 阅读 · 0 评论 -
Leetcode 打家劫舍
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额题目解析一看题目就有动态规划那味儿了。对于动态规划,首先需要找出找出边界条件、分割子问题、写出动态规划方程式、敲成代码即可。首先是边界条件,当没有房子的时候,盗贼盗获0,当只有一间房子时,盗获原创 2021-04-15 16:36:37 · 56 阅读 · 0 评论 -
Leetcode 爬楼梯
题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。题目解析非常经典的递归算法,也即斐波那契额数列。最开始就想用递归来做:F(n) = F(n -1)+F(n-2),但是超时了。if n == 0: return 1 if n == 1: return 1 else: return self.c原创 2021-04-15 15:27:20 · 79 阅读 · 0 评论 -
Leetcode 最长公共前缀
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。代码解答#!/usr/bin/python3# -*- coding:utf-8 -*-# 判断最长公共前缀class Solution: def longestCommonPrefix(self, strs): list_str = [] for item in strs: list_str.append(list(item))原创 2021-04-13 10:25:37 · 59 阅读 · 0 评论 -
LeetCode 括号匹配
括号匹配用python实现括号匹配,先自定义了一个栈类,包括入栈,出栈,取栈顶元素这四个步骤,其实也就是list的append,pop,stack[-1]这三个操作。代码#!/usr/bin/python3# -*- coding:utf-8 -*-# 判断有效括号class Stack(object): def __init__(self): self.stack = [] def push(self,data): self.stack.app原创 2021-04-12 17:33:52 · 164 阅读 · 0 评论 -
LeetCode 回文数
1.题目描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。2.初始解法十分垃圾:先转为数组,然后比较数字是否相同class Solution: def isPalindrome(self, x: int) -> bool: flag = 1 x = str(x) x = list(x)原创 2021-04-01 21:40:15 · 77 阅读 · 0 评论