算法
automan_huyaoge
对智能机器人,无人驾驶感兴趣
展开
-
斐波那契数列求解
int fib(int N) {if (N == 1 || N == 2) return 1;return fib(N - 1) + fib(N - 2);}暴力递归求解,时间复杂度O(2^n)int fib(int N) {if (N < 1) return 0; // 备忘录全初始化为 0 vector<int> memo(N + 1, 0); // 初始化最简情况 return helper(memo, N);}int he.转载 2022-01-27 10:20:34 · 94 阅读 · 0 评论 -
无监督学习python实现
1 -K-means Algorithmfrom sklearn import clusterimport pandas as pdimport numpy as npdataset = pd.DataFrame({ 'x': [11, 11, 20, 12, 16, 33, 24, 14, 45, 52, 51, 52, 55, 53, 55, 61, 62, 70, 72, 10], 'y': [39, 36, 30, 52, 53, 46, 55, 59, 12, 15,转载 2022-01-21 15:14:03 · 273 阅读 · 0 评论 -
python dfs和bfs
def bfs(graph, start): visited = [] queue = [start] while queue: node = queue.pop(0) if node not in visited: visited.append(node) neighbours = graph[node] for neighbour in neighbours: .转载 2022-01-21 10:56:00 · 162 阅读 · 0 评论 -
python线性规划
import pulpmodel = pulp.LpProblem("Profit_maximising_problem", pulp.LpMaximize)A = pulp.LpVariable('A', lowBound=0, cat='Integer')B = pulp.LpVariable('B', lowBound=0, cat='Integer')# Objective functionmodel += 5000 * A + 2500 * B, "Profit"# Constr.转载 2022-01-21 10:11:10 · 979 阅读 · 0 评论 -
查找算法python实现
Linear Searchdef LinearSearch(list, item): index = 0 found = False# Match the value with each data element while index < len(list) and found is False: if list[index] == item: found = True else:转载 2022-01-21 09:43:00 · 91 阅读 · 0 评论 -
排序算法python实现
Selection Sortdef SelectionSort(list): for fill_slot in range(len(list) - 1, 0, -1): max_index = 0 for location in range(1, fill_slot + 1): if list[location] > list[max_index]: max_index = location .转载 2022-01-20 11:11:02 · 78 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 4 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个元素值 互不相同 的数组转载 2021-04-08 10:33:38 · 157 阅读 · 0 评论 -
387.字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示:你可以假定该字符串只包含小写字母。C++解决方案:class Solution {public: int firstUniqChar(string s) { int cnt[26]; memset(cnt, 0, sizeof(cnt)); .转载 2020-12-24 16:48:47 · 74 阅读 · 1 评论 -
697. 数组的度
给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与nums拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, ...转载 2021-02-20 09:39:45 · 176 阅读 · 0 评论 -
面试题 16.24. 数对和
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。示例 1:输入: nums = [5,6,5], target = 11输出: [[5,6]]示例 2:输入: nums = [5,6,5,6], target = 11输出: [[5,6],[5,6]]提示:nums.length <= 100000C++解决方案class Solution {public: vector<vector<int>> pairS转载 2021-02-02 16:53:25 · 144 阅读 · 0 评论 -
面试题 16.21. 交换和
给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。示例:输入: array1 = [4, 1, 2, 1, 1, 2], array2 = [3, 6, 3, 3]输出: [1, 3]示例:输入: array1 = [1, 2, 3], array2 = [4, 5, 6]输出: []提示:转载 2021-02-02 16:51:41 · 109 阅读 · 0 评论 -
基础算法思想
编程的灵魂:数据结构+算法 算法的作用 递推算法 枚举(穷举)算法 递归算法 分治算法 贪婪算法 试探算法 模拟算法 算法的评价1、猜价格(算法的作用)#include <stdio.h>#include <cstdlib> //#include<curses.h>int main(){ int oldprice,price=0,i=0; printf("请首先设置商品的真实价格:"); scanf("%转载 2021-01-29 14:35:18 · 153 阅读 · 0 评论 -
1114. 按序打印
我们提供了一个类:public class Foo {public void first() { print("first"); }public void second() { print("second"); }public void third() { print("third"); }}三个不同的线程将会共用一个Foo实例。线程 A 将会调用 first() 方法线程 B 将会调用second() 方法线程 C 将会调用 third() 方法请设计修改程序,以...转载 2021-01-13 14:08:08 · 196 阅读 · 0 评论 -
171. Excel表列序号
给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例2:输入: "AB"输出: 28示例3:输入: "ZY"输出: 701C++解决方案class Solution {public: int t...转载 2021-01-11 14:43:32 · 109 阅读 · 0 评论 -
169. 多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。C++解决方案class Solution {public: int majorityElement(vector&...转载 2021-01-11 14:38:58 · 104 阅读 · 0 评论 -
228. 汇总区间
给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:"a->b" ,如果 a != b"a" ,如果 a == b示例 1:输入:nums = [0,1,2,4,5,7]输出:["0->2","4->5","7"]解释:区间范围是:[0,2].转载 2021-01-11 14:22:29 · 73 阅读 · 0 评论 -
1202. 交换字符串中的元素
给你一个字符串s,以及该字符串中的一些「索引对」数组pairs,其中pairs[i] =[a, b]表示字符串中的两个索引(编号从 0 开始)。你可以 任意多次交换 在pairs中任意一对索引处的字符。返回在经过若干次交换后,s可以变成的按字典序最小的字符串。示例 1:输入:s = "dcab", pairs = [[0,3],[1,2]]输出:"bacd"解释:交换 s[0] 和 s[3], s = "bcad"交换 s[1] 和 s[2], s = "ba...转载 2021-01-11 14:00:12 · 109 阅读 · 0 评论 -
172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为O(logn)。class Solution {public: int trailingZeroes(int n) { if(n<5){ return 0; } ...转载 2021-01-08 10:11:43 · 70 阅读 · 0 评论 -
183. 从不订购的客户
SQL架构Create table If Not Exists Customers (Id int, Name varchar(255))Create table If Not Exists Orders (Id int, CustomerId int)Truncate table Customersinsert into Customers (Id, Name) values ('1', 'Joe')insert into Customers (Id, Name) values ('2',转载 2021-01-08 10:06:59 · 85 阅读 · 1 评论 -
189. 旋转数组
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向右旋转 1 步: [99,-1,-100,3]...转载 2021-01-08 10:01:47 · 77 阅读 · 1 评论 -
182. 查找重复的电子邮箱
SQL架构Create table If Not Exists Person (Id int, Email varchar(255))Truncate table Personinsert into Person (Id, Email) values ('1', 'a@b.com')insert into Person (Id, Email) values ('2', 'c@d.com')insert into Person (Id, Email) values ('3', 'a@b.com'转载 2021-01-07 11:27:27 · 189 阅读 · 0 评论 -
181. 超过经理收入的员工
SQL架构Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, ManagerId int)Truncate table Employeeinsert into Employee (Id, Name, Salary, ManagerId) values ('1', 'Joe', '70000', '3')insert into Employee (Id, Name, Salary, ManagerI转载 2021-01-07 11:23:58 · 103 阅读 · 0 评论 -
547. 省份数量
有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isC.转载 2021-01-07 11:12:41 · 116 阅读 · 0 评论 -
Python性能分析-timeit模块
转载:有点意思!在命令行可以%timeit 加上语句In [6]: %timeit res = cv2.medianBlur(img,49)基础用法import timeit # 测试的函数def test1(): li = [i for i in range(1000)] # 列表推导式 """stmt: 需要测试的函数或语句setup: 运行的环境number: 被测试的函数或语句, 执行次数""" # 执行test1(), 执行1000次, 所...转载 2021-01-06 09:22:58 · 148 阅读 · 0 评论 -
176. 第二高的薪水
SQL架构Create table If Not Exists Employee (Id int, Salary int)Truncate table Employeeinsert into Employee (Id, Salary) values ('1', '100')insert into Employee (Id, Salary) values ('2', '200')insert into Employee (Id, Salary) values ('3', '300')编写一.转载 2021-01-05 10:59:51 · 91 阅读 · 0 评论 -
175. 组合两个表
表1: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键表2: Address+-------------+---------+| 列名 ...转载 2021-01-05 10:54:20 · 175 阅读 · 0 评论 -
830. 较大分组的位置
在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = "abbxxxxzyy"中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大分组 。找到每一个 较大分组 的区间,按起始位置下标递增顺序.转载 2021-01-05 10:48:50 · 76 阅读 · 0 评论 -
509. 斐波那契数
斐波那契数,通常用F(n) 表示,形成的序列称为 斐波那契数列 。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2示例 ...转载 2021-01-04 09:16:25 · 84 阅读 · 1 评论 -
435. 无重叠区间
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输入:转载 2020-12-31 09:20:59 · 110 阅读 · 0 评论 -
Rosalind第一题:DNA核甘酸计数(Counting DNA Nucleotides )
Rosalind(http://rosalind.info/problems/locations/)平台旨在帮助生信从业者通过解决问题来学习生物信息学和程序设计(可以理解为生物信息专业的学习和刷题平台)我将其 Bioinformatics Stronghold 板块中的习题译为中文,并给出经过测试的一种/多种可行的答案,供大家参考。问题甲串是简单地从一些选择的符号的有序集合字母并形成一个字;字符串的长度是它包含的符号数。长度为21的DNA字符串(其字母包含符号“ A”,“ C”,“ G”和“.转载 2020-12-30 10:46:55 · 352 阅读 · 0 评论 -
1046. 最后一块石头的重量
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为x 和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到 1,所...转载 2020-12-30 09:32:01 · 94 阅读 · 0 评论 -
188. 买卖股票的最佳时机 IV
给定一个整数数组prices ,它的第 i 个元素prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输入:k...转载 2020-12-28 09:13:43 · 96 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 ...转载 2020-12-25 16:52:52 · 81 阅读 · 0 评论 -
121. 买卖股票的最佳时机
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。...转载 2020-12-25 16:39:45 · 96 阅读 · 0 评论 -
455.分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子的胃口值...转载 2020-12-25 16:03:14 · 83 阅读 · 0 评论 -
376. 摆动序列
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如,[1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3)是正负交替出现的。相反, [1,4,7,2,5]和[1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(也可以不删除)元...转载 2020-12-24 17:09:40 · 91 阅读 · 1 评论 -
135. 分发糖果
老师想给孩子们分发糖果,有 N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例2:输入: [1,2,2]输出: 4解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。 第三...转载 2020-12-24 16:42:57 · 95 阅读 · 1 评论 -
贪心算法简介
1.贪心算法简介1.1 基本定义在贪婪算法(greedy method)中,我们要逐步构造一个最优解。每一步,我们都在一定的标准下,做出一个最优决策。做出决策所依据的标准称为贪心准则(greedy criterion)。贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法每一步必须满足以下条件: 1、可行的:即它必须满足问题的约束。 2、局部最优:他是当前步骤中所有可行选择中最佳的局部.转载 2020-12-14 09:58:44 · 1465 阅读 · 1 评论 -
860. 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回true,否则返回 false。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。...转载 2020-12-10 17:21:29 · 79 阅读 · 2 评论 -
62. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3. ..转载 2020-12-09 11:01:17 · 100 阅读 · 0 评论