算法
你只在游戏中存在
这个作者很懒,什么都没留下…
展开
-
二维凸包算法(Andrew算法)
在一个二维的花园中,有一些用 (x, y) 坐标表示的树。由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树。只有当所有的树都被绳子包围时,花园才能围好栅栏。你需要找到正好位于栅栏边界上的树的坐标。输入: [[1,1],[2,2],[2,0],[2,4],[3,3],[4,2]]输出: [[1,1],[2,0],[4,2],[3,3],[2,4]] bool tmp(vector<int> &a, vector<int> &b){ i原创 2022-04-23 21:58:17 · 645 阅读 · 0 评论 -
leetcode刷题记录 11月
整数替换 11.19class Solution { map<long,long> record;public: int integerReplacement(int n) { return dfs(n); } int dfs(long n){ if(n==1){ return 0; } if(record.find(n)!=record.end()) .原创 2021-11-19 12:37:09 · 293 阅读 · 0 评论 -
在acm模式下 使用GOLANG刷题的细节
第一行是m,n的终端输入的矩阵package mainimport ( "fmt")func main() { var m, n int fmt.Scanln(&m, &n)//读取一行的m,n m,n以空格隔开 res := make([][]int, m) for i := range res { res[i] = make([]int, n) } fmt.Println(res)}...原创 2021-05-27 17:46:29 · 2289 阅读 · 0 评论 -
华为二面找小岛个数
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出: 1class Solution { int count=0;.原创 2020-09-17 14:31:33 · 291 阅读 · 0 评论 -
股票问题
力扣112 股票2输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3自己的思路:遍历 看做找寻连续升的子数组1.记录升序子数组的头部 ;2.如果 不为升序为子数组计算RES+=P(尾)-P(头) 且头部记录为当前i;3.最后原创 2021-03-17 17:16:28 · 57 阅读 · 0 评论 -
排序算法合集
堆排序平均时间复杂度:O(nlogn) 稳定性:不稳定思想:1.先找到第一个非叶子节点 n/2-1,n为数组长度,然后构成大顶堆2.将堆顶和数组末尾元素交换;3.对0<j<n的元素重复前面1,2直到有序#include<iostream>#include<vector>using namespace std;void bigheap(vector<int>&a,int i,int length){ int temp=a[i]原创 2021-03-16 21:44:42 · 115 阅读 · 0 评论