自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(294)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 二叉树的遍历 递归/栈 方法

递归很简单,这里省略栈一开始觉得无从下手结合递归和迭代栈的对比递归是函数调用函数,构成的是一个调用栈,其过程就是一般的二叉树图,从根到叶子 按照 “根左右 左根右 左右根”中的某个顺序去调用,是一个从上往下的过程迭代栈,也要达到这一目的。可你无法进行函数调用函数这一过程。现在需要用栈实现一层一层调用的效果。与此同时,在一层一层建立栈的同时,还需要考虑终止条件。函数调用函数,将结点压栈,和目标反向终止条件,即标记法整个过程中栈的变化:不同的遍历方式,栈的增长方式不同前序遍历:每有一

2021-11-02 23:19:33 608

原创 UCloud Ubuntu 18.04 配置GPU环境踩坑指南,包括驱动,CUDA,Docker,Nvidia-Docker等

设备:NVIDIA Corporation GV100GL [Tesla V100 PCIe 16GB] (rev a1)# Ucloud Ubuntu 18.04 GPU 环境 Driver,Cuda,Docker,Nvidia-docker 安装记录# 部分1 参考https://docs.ucloud.cn/gpu/operation/ubuntu18_cuda# 检查GPU设备识别sudo lspci | grep NVIDIA# 屏蔽开源驱动sudo vim /etc/modp.

2021-06-27 16:29:56 767

原创 Leetcode 128. Longest Consecutive Sequence 最长连续子序列 DFS,并查集

DFS每访问一个元素i,都直接去看i +1, i + 2… i + n直到这些元素不存在,通过记忆化搜索的方式,保证只会搜n次class Solution {public: int dfs(unordered_map<int, int>& mp, int v){ if (mp.find(v) == mp.end()) return 0; if (mp[v] != 0) return mp[

2021-06-16 00:51:52 353

原创 leetcode 15. 3Sum 三数和,双指针,跳过重复元素

class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; sort(nums.begin(), nums.end()); int n = nums.size(); for(int i = 0; i < n; i ++){

2021-06-02 16:25:36 139

原创 Leetcode 1882. Process Tasks Using Servers 双键/三键比较排序

class Solution {public: struct Node1{ int w, id, tm; bool operator< (const Node1& t) const{ if (tm != t.tm) return tm > t.tm; if(w != t.w) return w > t.w; return id > t.id; }

2021-05-30 23:38:45 216

原创 Leetcode 1871. Jump Game VII 递推法,前缀和

反过来想,如果最后一位i能达到,那么 [i - a, i - b]之间是能达到的如果用f[i] = 1 表示能达到,那么[i - b, i - a]中至少有一个1,既 f[i - b] + f[i - b + 1] + f[i - b + 2] ... + f[i - a] > 0,这里可以用前缀和代码:const int N = 1e5 + 10;int s[N], f[N];class Solution {public: bool canReach(string str, .

2021-05-23 21:15:27 240

原创 Leetcode 215 Kth Largest Element in an Array 快排思想,O(n)时间复杂度

每次选定分界点,根据分界点分好左右两端区间之后判断分界点位置和k的关系,从而去相应的区间继续递归找分界点,直到找到其它方法:排序(nlogn),堆(nlogn, nlogk两种)class Solution {public: int quicksort(vector<int>& q, int l, int r, int k){ if(l >= r) return q[l]; int i = l - 1, j = r + 1, x .

2021-05-15 14:09:33 231

原创 Leetcode 311 / Lintcode 654 Sparse Matrix Multiplication

LQ 要钱故跑到 Lintcode去做…首先看暴力解:就是res[i][j] 等于A的第i行和B第j列的点积class Solution {public: vector<vector<int>> multiply(vector<vector<int>> &A, vector<vector<int>> &B) { int m = A.size(), n = B[0].siz.

2021-05-11 20:19:14 137

原创 Leetcode1856. Maximum Subarray Min-Product 前缀和/单调栈

以每个元素作为最小值的区间static const int MOD = 1e9 + 7;const int N = 1e5 + 10;typedef long long LL;int h[N], l[N], r[N], q[N];LL s[N];class Solution {public: int maxSumMinProduct(vector<int>& nums) { int n = nums.size(); // 构造前.

2021-05-09 14:42:52 239

原创 Leetcode1855. Maximum Distance Between a Pair of Values 经典双指针/二分法 关于单调性的理解

双指针class Solution {public: int maxDistance(vector<int>& nums1, vector<int>& nums2) { int res = 0; for(int i = 0, j = 0; i < nums1.size(); i ++){ while(j < nums2.size() - 1 && nums2[j + 1]

2021-05-09 13:48:15 343

原创 github.com git clone 下载慢的完美超简单解决方法,不用代理,不用装任何插件,不用走码云

解释速度慢本质上是github.com对应的ip-address存在问题,可能被污染了,可能是其它原因但是这么大一个网站肯定不只映射一个ip,因此不妨换一个映射的ip试试看操作去官网查看所有映射的ip地址 link点击meta后,界面如下这是所有映射的ip了从web里选,比如52.74.223.119/32sudo vim /etc/hosts,添加如下完成。如果还是不行,不妨再换些ip...

2021-05-08 11:24:21 230

原创 Python 列表表达式中的 if else

两种形式# 1 # 这种 用作条件判断 满足condition条件则会把x放入列表中,反之就不加进去# 最大的好处是只需要考虑满足条件的情况,不用管else[x for x in data if condition]# 2# 这种 用作赋值 满足condition则执行exp1,反之exp2,两者都不能缺[exp1 if condition else exp2 for x in data] 有时是需要将data中某些异常数据丢掉的,故采用1形式。2形式会导致你无论如何会添加某个.

2021-05-07 17:44:26 565

原创 Vim 下 正则表达式 用一个空格替换多个空格

sfjlk sdjfk sdfjk sdla只换第一个遇到的:这里\s表示空格,+表示+的意思,即匹配1个或多个:'<,'>s/\s\+/ /全换:'<,'>s/\s\+/ /g

2021-05-07 17:11:41 1339

原创 Lintcode 和 leetcode 对照,防止某些会员题没法做

https://www.1point3acres.com/bbs/thread-453640-1-1.html

2021-04-26 14:47:49 1881

原创 如何理解深度学习中的局部最优

错觉深度神经网络“容易收敛到局部最优”,很可能是一种想象,实际情况是,我们可能从来没有找到过“局部最优”,更别说全局最优了。很多人都有一种看法,就是“局部最优是神经网络优化的主要难点”。这来源于一维优化问题的直观想象。在单变量的情形下,优化问题最直观的困难就是有很多局部极值,如:人们直观的想象,高维的时候这样的局部极值会更多,指数级的增加,于是优化到全局最优就更难了。然而单变量到多变量一个重要差异是,单变量的时候,Hessian 矩阵只有一个特征值,于是无论这个特征值的符号正负,一个临界点都是局部

2021-04-23 10:39:22 2563

原创 Leetcode 233 & AcWing 338 数位DP

LQ 233ACWing 338#include <iostream>#include <vector>using namespace std;// Get the number of k from 1 to nint kNumbers(int n, int k) { if (!n) return 0; // n = 123 answer = [3, 2, 1] vector<int> answer; while(n) .

2021-04-22 00:07:23 159

原创 1834. Single-Threaded CPU 用iota构造索引,并得到排序后的对应索引

class Solution {private: typedef pair<int, int> PII; typedef long long LL; public: vector<int> getOrder(vector<vector<int>>& tasks) { int len = tasks.size(); vector<int> index(len);

2021-04-19 20:47:27 130

原创 1824. Minimum Sideway Jumps 贪心和DP方法

贪心如果下一个位置i+1有障碍的话,从当前位置i进行跳跃就有两种情况只有一个选择即当前i已经有了一个障碍,算上下一个的障碍,3-2=1 只需要选择剩下唯一的空跳即可有两个选择这时候就要判断该选哪个了方法就是贪心。分别看两个选择往后,在不跳跃的情况下,最远能走多久时间复杂度O(n2)O(n^2)O(n2)class Solution {public: int minSideJumps(vector<int> &ob) { in

2021-04-17 23:22:53 177

原创 解决 ValueError: Cannot convert a partially known TensorShape to a Tensor: (?, 256)

既然说 paritially known,那就想办法直接告诉后台shape到底什么样tf.shape 就可以获取当前张量的shape样例代码class Sampling(layers.Layer): def call(self, inputs): z_mean, z_log_var = inputs batch = tf.shape(z_mean)[0] # 获取第一维 dim = tf.shape(z_mean)[1] # 获取第二维 epsilon = tf.

2021-04-17 13:41:43 2243 3

原创 Python 字符串前加r, u, b

1、字符串前加 f字符串格式化(python 3.6 新增,类似于perl中的变量内插)例: vers = ‘python 3.6’f"该功能是{vers}新增"返回:该功能是python 3.6新增格式化的字符串文字前缀为"f",类似str.format()。包含由花括号包围的替换区域。替换字段是表达式,在运行时进行评估,然后使用format()协议进行格式化。2、字符串前加 u例:u"我是含有中文字符组成的字符串。"作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前

2021-04-05 19:55:02 249

原创 Python 递归遍历当前目录下所有文件

有时候,需要对某个目录下中的子文件进行修改#conding=utf8 import os g = os.walk('./') for path,dir_list,file_list in g: for file_name in file_list: print(os.path.join(path, file_name))

2021-04-03 15:45:16 222

原创 简单方便,快速切换谷歌中文搜索的配置

有时想要在谷歌搜索上看中文内容,如果添加通配符又比较麻烦,简单高效解决方法如下:「设置」-「管理搜索引擎」「添加」内容如下SeachEngine: google-chineseKeyword: cnURL with %s in place of query: https://www.google.com/search?hl=en&as_q=%s&lr=lang_zh-CN这样,下次直接在地址栏键入「cn」+「tab」,即可直接搜索中文内容...

2021-03-30 11:42:46 1402

原创 Leetcode 1792. Maximum Average Pass Ratio lambda表达式,优先队列花哨用法

优先队列里可加array具体声明:priority_queue<pair<double, array<int,2>>> pq;class Solution {public: double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) { auto profit = [&](double a, double b).

2021-03-30 00:52:24 118

原创 Leetcode 4. Median of Two Sorted Arrays 好理解的二分法

m1:数组1中元素的个数最终目的:l=r=m1=k-m2。 此时此刻 nums1[m1-1],nums1[m1],nums2[m2-1],nums2[m2] 四个数刚好杂糅在一起// // [0…m1-1],[0…m2-1]共同构成序列的前一半,[m1…n1], [m2…n2]则共同构成后一半如果相等,说明[A_m1-1 A_m1 B_m2-1 Bm2 中,两个A只存在一个]class Solution {public: double findM..

2021-03-29 13:59:41 104

原创 Leetcode 1806. Minimum Number of Operations to Reinitialize a Permutation 看出本质

刚开始老老实实推了半天,半天规律找不来个人认为需要整体得看一看其实,只要关注某个index i,当它经过变换,又回来的时候,就说明完成要求了class Solution {public: int reinitializePermutation(int n) { int init = 1; int cnt=0; int i=1; while(cnt==0 || init !=i){ c.

2021-03-29 00:27:55 172

原创 Leetcode 1808. Maximize Number of Nice Divisors 快速幂

类似题 343割绳子,50快速幂快速幂中,数据类型根据题意来,可能是int, double, long long。中间计算结果防止溢出故再多乘1ll,同理如果是加法(本题中没遇到)就+0llclass Solution {public: int maxNiceDivisors(int primeFactors) { if(primeFactors==1) return 1; if(primeFactors==2) return 2; .

2021-03-28 15:04:42 123

原创 Leetcode 376 wiggle-subsequence 贪心

class Solution {public: int wiggleMaxLength(vector<int>& nums) { int preD=0; int curD=0; int cnt=1; for(int i=1; i<nums.size(); i++){ curD=nums[i]-nums[i-1]; if((curD>0 &&

2021-03-22 13:20:30 227

原创 Leetcode 1786. Number of Restricted Paths From First to Last Node 经典Dijstra + DFS记忆矩阵

class Solution {public: static const int N=2e4+7, M=8e4+7, mod=1e9+7; typedef pair<int, int> PII; int e[M], ne[M], w[M], h[N], idx; int n; bool st[N]; long long dist[N]; int memo[N]; void add(int a, int b, int c)

2021-03-20 08:28:45 146

原创 Linux 查看正在占用的端口

netstat -tunlp

2021-03-19 10:23:36 120

原创 jupyter notebook 用 notebook 的形式打开markdown

pip install notedownvim ~/.jupyter/jupyter_notebook_config.py添加如下c.NotebookApp.contents_manager_class = ‘notedown.NotedownContentsManager’再重启jupyter即可

2021-03-18 16:07:48 210

原创 Vim 配置

常规set shiftwidth=4set autoindentset expandtabset tabstop=4粘贴时因为存在换行自动缩进,导致代码横飞。每粘贴一行都会往后缩进set pasteset nopaste

2021-03-18 11:00:09 78

原创 计算广告/数字营销常见术语

Placement一个网页或者手机App上,可以放置广告的广告位

2021-03-17 14:38:04 238

原创 Leetcode 310. Minimum Height Trees DFS加双key备忘录

从各个点dfs,求出最小的高度memo的key和两者有关,一个是dfs的起点,一个是dfs的根结点,如下图图来源DFSclass Solution {public: // 对于每个点k,开一个单链表,存储k所有可以走到的点。h[k]存储这个单链表的头结点 int h[20005]; //邻接表存储树,有n个节点,所以需要n个队列头节点 int e[20005]; //存储元素 int ne[20005]; //存储列表的next值 int idx; /.

2021-03-10 01:19:24 92

原创 C++ map哈希表的各种操作

遍历for(auto& e: memo) cout<<e.first<<endl;排序大到小自定义结构体#include <map> #include <string>#include <iostream>using namespace std; int main(){map<string, int, greater<string>> student;mapStudent [ ".

2021-03-10 01:16:17 524

原创 Leetcode 47 带重复元素的全排列

兄弟题,不带重的全排列 LQ46先排序,然后回溯的时候,只让相同的元素被用一次。即[…A1,A2…]中,先由A1来作为dfs的起点往后跑,那么不希望之后也让A2作为dfs起点跑,这会造成重复。目标就是跳过它们个人觉得code1更好理解code1class Solution {public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<.

2021-03-10 00:32:19 179

原创 Leetcode 1775. Equal Sum Arrays With Minimum Number of Operations 数学方法,ceil向上取整

刚开始想到堆的方法,见后面然后发现还有count方法,可以实现O(n)复杂度,这种题目我认为需要有数学的sense,要善于在其中找出规律.这里直接count每个元素出现的次数,可以加快计算(int)ceil(A*1.0/B) 可以起到向上取整的作用O(n) countclass Solution {public: int minOperations(vector<int>& nums1, vector<int>& nums2) { .

2021-03-02 02:10:21 219

原创 Leetcode 1774. Closest Dessert Cost 枚举法 vector 中的insert方法

vec中每个元素最多选两个vec拼接成两段,进行枚举,这样就达到目的了枚举题class Solution {public: int closestCost(vector<int>& baseCosts, vector<int>& toppingCosts, int target) { int ans = INT_MAX; for (int i = 0; i < baseCosts.size(); i++).

2021-03-01 00:20:08 187

原创 Leetcode 105&106 重建二叉树 前序中序后序得到层序遍历结果

前序+中序前序遍历是从左往右,从根结点到叶结点,优先把父亲结点遍历出来中序遍历可以给定结点,知道左右子树是什么由于每个值是unique的,可以以它为键,建立映射表根据前序遍历知道根结点索引index,映射表映射出根结点在中序遍历的位置index_in,然后再分别建立左右子树:左子树的根结点就是前序遍历索引index+1,理由是「前序遍历从左到右进行」右子树的根结点是 (index+1 + index_in-start_in) ,start_in是构建当前树中,中序遍历索引的起点。 index

2021-02-26 10:51:56 184

原创 Leetcode 169. && JZ 39 Majority Element 摩尔投票算法

这个思路比较有趣,但限定一定存在众数的情况把众数记为 +1,把其他数记为 -1,将它们全部加起来,显然和大于 0,从结果本身可以看出众数比其他数多。class Solution {public: // Boyer-Moore 摩尔投票算法 int majorityElement(vector<int>& nums) { int votes=0, res; for(auto e: nums){ if(vote.

2021-01-02 20:40:42 88

原创 Leetcode 297 && JZ 37. Serialize and Deserialize Binary Tree 层序遍历和前序遍历解法 streamstring用法

题意:将给定的字符串转二叉树再转回来一开始理解错了,看到题目样例中有[1,2,3,null,null,4,5]只有两个null,感觉根本无从下手。实际上这个并不重要,只要能完成最终转换都可,算是题目的锅。ostringstream, istringstream 输入输出流在本题中,将一系列数如1 2 3写成1 2 3中间用空格隔开,在输入输出流中即可进行直接处理,不需要考虑拼成字符串逗号分割等to_string 和 stoi用法字符串比较层序遍历/** * Definitio.

2021-01-02 16:58:21 106

论文解读pre:Clustering Very Large Multi-dimensional Datasets with MapReduce

用latex beamer生成的pdf版本的ppt,关于论文Clustering Very Large Multi-dimensional Datasets with MapReduce。是我的pre

2020-06-22

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除