-->
THU SIGS Ph.D. student | 我们的征途是星辰大海
题目链接:https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/description/我的思路典型的双指针/滑动窗口类型题目,想到初始化左右两个指针$l=0, r=n-1$,$n$为所给数组的长度,因为我们要找的是最小操作数,那么在判断左右两边到底减哪个时,采用贪心策略,选更大的那一个,就能让$x$减的更快,更快到0,有几种情况:$nums[l]>nums[r]$:$nums[l]\leq x$: 说明此时$nums[l]$可以作为一个操作数,$x-nums[l]$,同时操作数$ans+1$,左指针右移$l+1$$nums[l]>x\geq nums[r]$:则$x-nums[r]$,同样$ans+1$,右指针左移$r-1$$nums[r]>x$:说明中断了,不再满足题目中的条件,直接break$nums[l]\leq nums[r]$:$nums[r]\leq x$:$x-nums[r], ans+1, r-1$$nums[r]>x\geq nums[l]$:$x-nums[l
Perl-speaks-NONMEM (PsN) is a collection of Perl modules and programs aiding in the development of non-linear mixed effect models using NONMEM. The functionality ranges from solutions to simpler tasks such as parameter estimate extraction from output files, data file sub setting and resampling, to advanced computer-intensive statistical methods. PsN includes stand-alone tools for the end-user as well as development libraries for method developers.安装步骤:安装系统环境依赖:sudo apt update sudo apt install -y
题目链接:https://leetcode.cn/problems/count-subarrays-where-max-element-appears-at-least-k-times/description/我的思路想到用滑动窗口双指针,但是在结果计算和指针移动的判断上还是有些不太对,思路是清晰的,离正确答案之差一点点。首先求出$nums$中的最大值记为$m$,初始化左指针$l=0$,定义一个变量$cnt$统计枚举过程中最大值出现了几次,接着用enumerator枚举$r,x$,如果$x=m$,则将$cnt+1$,当$cnt\geq k$时,进入while循环判断,此时意味着到了某个符合条件子数组的边界,$ans+1$,如果$nums[l]=m$,则将$cnt-1$,同时将左指针右移$l+1$,因为我们要统计的是子数组的个数,所以在考察完每个$r,x$时,再将左指针重置,$l=0$,以免漏掉情况,如此循环判断下去,返回$ans$分析这个思路看上去很正确,但存在考察不全的情况,尽管想到了重置左指针,但由于$cnt$的值动态变化,所以会漏掉计数。比如案例$[1,3,2,3,3], k =
连接步骤安装VScode客户端,这步没有什么好说的,直接在官网下载安装包安装即可安装remote-ssh插件,结合网上众多教程和踩坑案例,不要安装最新版本的该插件,选择107.1版本安装,并且将自动更新勾选给去掉插件装完后VScode左侧会新增一个remote connection的标志,点进去,点击右上方加号添加服务器地址,在输入栏输入ssh username@ip,接着会让选择config配置文件,选择第一个即可打开配置文件,可以在首行Host将服务器名字进行修改,改成你想要的显示名称右键刚刚添加的服务器,选择连接,此时会让选择系统类型,并要求输入密码在file explorer界面,可以打开任意的文件夹进行文件访问,即可开始写代码了第一次使用时的踩坑卡在安装vscode server上:为了让vscode能正常访问远程服务器,需要在服务器上下载一个客户端,具体的说明可以参考https://code.visualstudio.com/docs/remote/vscode-server,初次使用时vscode会自动在远程服务器上下载,但由于是外网,访问速度很慢,直接下载需要一两个小时
题目链接:https://leetcode.cn/problems/valid-triangle-number/description/我的思路这题是很典型的初中数学题,根据三条边的大小来判断是否能组成一个三角形,想到判断条件为:两边之和大于第三边,两边之差小于第三边。很容易想到暴力枚举法,但这样的效率很低,因此联想到用双指针法,但也没有做进一步的思考,就直接开始动手了纠正首先将nums排序,从中取出已经排好序的三个数$a\leq b\leq c$,那么根据判断条件,要让这三条边能构成一个三角形,有:$a+b>c,a+c>b,b+c>a$,因为已经排好序了,那么后面两个条件必然成立,因此我们的目标转换为判断$a+b$是否大于$c$这里有一个很容易困惑的点,就是第二个条件“两边之差小于第三边”是否能满足?根据上面的讨论,$a+c>b$和$b+c>a$是必然成立的,那么根据这两个式子可以推出:$|b-a|=a-b<c,|b-c|=c-b<a,|a-c|=c-a<b$也必然成立(分别将两个变量移到不等号右边),那么第二个条件天然地满足了,只剩下
DatatypesFunction descriptionnamedtuple()factory function for creating tuple subclasses with named fieldsdequelist-like container with fast appends and pops on either endChainMapdict-like class for creating a single view of multiple mappingsCounterdict subclass for counting hashable objectsOrderedDictdict subclass that remembers the order entries were addeddefaultdictdict subclass that calls a factory function to supply missing valuesUserDictwrapper around dictionary objects for easier dict subc
题目链接:https://leetcode.cn/problems/shortest-path-in-binary-matrix/description/我的思路尝试用dfs的思路,思维定势了,已知起点在左上角,终点在右下角,那么自然想到要找到最短路径,那只能往右或者往右下走,于是在dfs中设置了(i + 1, j)和(i + 1, j + 1)两个位置的考察,同时定义一个结果ans变量,当走到终点后,比较当前路径的长度distance和ans的大小,将更小的那个值保留,不断比较,找到最终的答案但这样的想法存在两个问题:1. 可走的方向考虑欠妥,太理想化了,万一右边和右下的路都被挡住了,只能往右上或者向上走,那这样的做法就永远找不到正确的路径,这个问题非常致命,在这道题里应该要考察八个方向:上下左右、左上左下、右上右下;2. dfs的方法不是不可以,但是随着矩阵大小的增加,其遍历所需时间会呈指数级暴涨,很容易就出现超时,效率非常低纠正这道题应该用bfs(breadth-first search)的方法,广度优先算法,用到队列(queue)结构来进行遍历而非栈,按层次进行遍历。深度优先搜
题目链接:https://leetcode.cn/problems/n-queens/description/思路依旧是回溯法,深度优先搜索,dfs,从第一行的第一列第一个元素出发,把所有横向纵向的可能性都判断一遍,在遍历的过程中加入判断条件进行剪枝。仔细阅读一下这道题,可以把限制条件抽象为以下两点,并通过对应的方法来进行判断:同列不能有两个元素,定义一个col列表,长度为n,表示每次遍历中每一列的元素占有情况,如果某一列上放了queen,就将对应位置更改为True,这个变量在每次循环中需要回溯对角线上不能有两个元素,通常而言,对角线上的元素比较特殊,满足某种数学关系,我们可以抓住这个数学关系来进行判断,在↘方向上的对角线元素满足$i - j$始终为固定值,在↗方向上的对角线元素始终满足$i + j$为固定值,如下图所示也就意味着,比如当前在$[2, 3]$位置处放了queen,那么对于其他任意满足$i+j=2+3 =5$以及$i-j=-1$的位置都不能再放queen了。于是乎,我们可以定义两个对角元素的考察列表ldiag和rdiag,因为n是固定的,有$0\leq i + j\leq
Bangyao Wang
不啻微芒,造炬成阳