![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法学习
文章平均质量分 52
各种基础算法学习及总结
yzp-
这个作者很懒,什么都没留下…
展开
-
常用位算法
3,n&(~n+1) 获取 n 最后的 1的数字,假设 n 为 110010,n&(~n+1) 就是 000010。4,n&(n-1), 它会删除 n 中最后一个1。2, 判断奇偶,n&1,即判断最后一位是0还是1,如果结果为0,就是偶数,是1 就是奇数。获取 32 位二进制的 1 的个数,它会循环遍历 n 中为 1 的个数的次数。获取 32 位二进制的 1 的个数,它会循环遍历 n 中为 1 的个数的次数。1,位翻转 n^1 ,n 是0 或 1,和 1 异或后位翻转了。原创 2024-06-06 11:16:36 · 265 阅读 · 0 评论 -
双指针: 盛水最多的容器
当左指针在 0 处,右指针在 height.length -1 处,此时容器的底最长,但要想盛最多的水,就要让容器的底乘高数值最大,容器的高取左右两指针所指向的元素最小值。给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水。当左指针指向的高比右指针所指向的高小,左指针往右前进 1;当左指针指向的高比右指针所指向的高大,右指针往左前进 1;2.当n小于2时,视为不能形成容器,请返回0。原创 2024-06-05 17:41:30 · 322 阅读 · 0 评论 -
回溯算法解法 针对数组或字符串
例如:给出的字符串为"25525522135",返回["255.255.22.135", "255.255.221.35"]. (顺序没有关系)2,确定 dfs() 的结束状态,本地中是找到一个合法的ip字符串,如果发现中间状态 tmp 不是一个合法的ip,就终止本次回溯。dfs(s,0,"") s 是不变的,我们要搜索它得到整个解,0是索引初始位置,"" 是初始中间状态。注意:ip地址是由四段数字组成的数字序列,格式如 "x.x.x.x",其中 x 的范围应当是 [0,255]。原创 2024-06-05 16:23:44 · 276 阅读 · 0 评论 -
单调栈的用法
1,只有对题目和解法真的知根知底,对算法的每一个运算过程都能在草稿纸上画出来,才算是懂了,为了避免遗忘,最好要记一下笔记。解法: 1,使用单调栈对数组for循环。2,用栈顺序地记录每一个数组元素的索引位置。3,对于当前遍历的数组元素值C 大于当前栈顶索引所指向的数组元素值B,使用while循环依次弹出小于C的栈顶元素,每弹出一个元素,记录C和栈顶元素值的差值,保存到res数组。class Solution { public int[] dailyTemperat...原创 2021-08-25 00:26:43 · 178 阅读 · 0 评论 -
树的递归题解
今天做了三道解法差不多的三道题目,它们的递归形式都很类似,因为树的题目大多都和遍历,递归有关,就是深度优先搜索。然后总结了一下树递归的模板:1,定义一个dfs()的递归函数,传入一棵树和保存的容器。2,对该树为null的情况进行判断。3,对左子树进行dfs()的递归,保存左子树的递归结果。4,对右子树进行dfs()的递归,保存右子树的递归结果。5,已知本树的根节点的值,本节点左子树的递归结果,本节点右子树的递归结果,做一些计算,用map或list保存计算结果。6,返回本次的递归结原创 2021-06-22 22:54:39 · 223 阅读 · 1 评论