算法思维
liubeiandcaocao
这个作者很懒,什么都没留下…
展开
-
★背包问题 377,494,518,139,416,474,322
题意是给定一个数组,和给定一个目标值,数组里的元素可以重复使用,返回加和为目标值的所有组合的情况个数和组合39题不同的是,该问题虽然可以重复使用,即完全背包问题,但是组合后的元素之间的顺序也要考虑,即[1,1,2]和[1,2,1]是两种情况,而39题只考虑组合内的元素是否相同,没考虑顺序,属于完全背包问题。该题不属于完全背包问题,属于第三种情况class Solution: def...原创 2020-05-05 23:05:39 · 140 阅读 · 0 评论 -
岛屿4题集合 岛屿数量;岛屿最大面积;岛屿周长;岛屿填海求最大面积
DFS的好题岛屿数量和岛屿最大面积#1.200.岛屿数量和 2.695岛屿的最大面积 ☆☆☆class Solution: def maxAreaOfIsland(self, grid): row = len(grid) if row==0: return 0 col =len(grid[0]) res = 0 dp =[] count = 0 matri原创 2020-09-27 11:27:13 · 266 阅读 · 0 评论 -
最长上升子序列,经典
class Solution: def lengthOfLIS(self, nums: List[int]) -> int: 方法一,动态规划 if not nums: return 0 dp = [1]*len(nums)#dp【0】以0位结尾的,最长上升子序列长度为1 for i in range(1,len(nums)): for j in range(i):原创 2020-09-06 23:02:12 · 136 阅读 · 0 评论 -
剑指offer46 把数字翻译成字符串 多种思路,必看 动态规划
动态规划-1dp【i】表示以i索引结尾时,翻译的方法数class Solution: def translateNum(self, num: int) -> int: string = str(num)#将数字转成str方便索引 dp = [0]*(len(string))###区别1 dp[0] = 1 #dp【i】的含义是第i位为止,有多少种翻译方法;dp[0]第0位为止,有1种翻译方法; #如果dp[i原创 2020-09-06 15:50:02 · 110 阅读 · 0 评论 -
最小方差
题意:给定一个数组,找到一个索引点i,使【0,i】和【i+1,n】的方差和最小D(x)=E(x2)-E(x)2class Solution: def find_best_cut(self,arr): n = len(arr) prex = [0] prex2 = [0] for i in arr: prex.append(prex[-1]+i) prex2.append(prex2[原创 2020-09-05 22:41:32 · 922 阅读 · 0 评论 -
leetcode(48)旋转图像-python
题目官网上有,直接上思路将n*n的二维矩阵表示的图像顺时针旋转90°,前提必须在原地旋转图像,这意味着需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。class Solution: def rotate(self, matrix: List[List[int]]) -> None: n = len(matrix[0]) for i in range...原创 2019-11-10 18:37:46 · 108 阅读 · 0 评论 -
动态规划-最长公共子序列,最长公共子串
最长公共子序列,用动态规划的方法:返回子序列str1 = input().strip()str2 = input().strip()def LCS(str1,str2): #定义1个函数,就通过了 dp = [[0]*(len(str2)+1) for _ in range(len(str1)+1)] res = [] for i in range(1,len(str1)+1): for j in range(1,len(str2)+1):原创 2020-08-21 21:57:42 · 110 阅读 · 0 评论 -
牛客第2章习题
n = int(input())line =input().strip()nums = list(map(int,line.split())) #这就是这道题的知识点;python3中map后要list一下nums.sort()NN = sum(nums[::2])YY = sum(nums[1::2])print(abs(NN-YY))n , m= map(int,input().split())machines = []tasks = []for i in range(n):原创 2020-08-19 22:02:08 · 163 阅读 · 0 评论 -
leetcode(14)最长公共前缀-python
给定一组字符串,找出这些字符串的公共最长前缀。class Solution: def longestCommonPrefix(self, s: List[str]) -> str: if not s: return '' res = s[0] i=1 while i<len(s): while s[i].find(res) ...原创 2019-11-19 10:18:43 · 76 阅读 · 0 评论 -
剑指offer 43 1~n整数中1出现的次数
题意是给定n,输出1~n个数中,位数上有1的在每个数出现的次数和;比如n=12,则位数上有1的有1,10,11,12,一共4个,但统计的是1出现的次数,则是5次,11出现了2次1;思路是:统计一个数,其某位上出现1的总次数,然后将该数每一位上的总次数加起来就是最后的总次数规律题,当该位是0时,则出现的总次数是highdigst;当该位是0时,则出现的总次数是highdigst+low+1; 当该位是0时,则出现的总次数是(high+1)*digstwhile high != 0 or cur !原创 2020-07-29 14:41:05 · 106 阅读 · 0 评论 -
除自身以外数组的乘积
类似于脑筋急转弯的问题,练的是算法思维class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: n = len(nums) #左侧数组 left = [1]*n for i in range(1, n): left[i] = left[i-1] * nums[i-1] #右侧数组原创 2020-05-28 23:04:25 · 104 阅读 · 0 评论