算法
Azadoo
这个作者很懒,什么都没留下…
展开
-
使用anrwatchdog抓取错误日志
buld.gradle 中引入。原创 2022-10-19 16:21:00 · 595 阅读 · 0 评论 -
抓取特定路径下文件 可批量压缩成压缩包 并分享到微信
【代码】抓取特定路径下文件 可批量压缩成压缩包 并分享到微信。原创 2022-10-19 16:20:02 · 109 阅读 · 0 评论 -
监听多次点击事件
【代码】监听多次点击事件。原创 2022-10-19 16:09:07 · 202 阅读 · 0 评论 -
正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。链接:https://leetcode-cn.com/problems/regular-expression-matching/solution/zheng-ze-biao-da-shi-pi-pei-by-leetcode-solution/来源:力扣(LeetCode)class Solution { public boolean isMatch(String s, String p) {原创 2020-06-20 15:32:06 · 159 阅读 · 0 评论 -
数值的整数次方(快速幂,清晰图解)
https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/solution/mian-shi-ti-16-shu-zhi-de-zheng-shu-ci-fang-kuai-s/转载 2020-06-08 21:34:17 · 293 阅读 · 0 评论 -
二进制中1的个数(转)
链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8?answerType=1&f=discussion来源:牛客网题解方法一:暴力方法分析:题目给一个有符号的整数int,求整数转化成二进制数后,1的个数。直接根据题目的描述来提出方法一。有2个问题:问题1: 如何从十进制数转化到二进制数?问题2:转化为二进制数后,如果判断有1的个数?方法1:除2取模法。int val; // in转载 2020-06-06 17:13:23 · 142 阅读 · 0 评论 -
柱状图中最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10方法一 暴力public int largestRectangleArea1(int[] heights) { int size = heigh原创 2020-05-31 00:14:30 · 162 阅读 · 0 评论 -
字符串解码 栈与递归
方法一:利用两个栈public class ZiFuChuanJieMa { public static void main(String[] args) { Solution6 a = new Solution6(); System.out.println(a.decodeString("3[ab]")); }}class Solution6 { public String decodeString(String s) { char[] a = s.原创 2020-05-28 21:47:20 · 196 阅读 · 0 评论 -
重建二叉树
根据中序遍历和前序遍历可以确定二叉树,具体过程为:根据前序序列第一个结点确定根结点根据根结点在中序序列中的位置分割出左右两个子序列对左子树和右子树分别递归使用同样的方法继续分解 例如:前序序列{1,2,4,7,3,5,6,8} = pre中序序列{4,7,2,1,5,3,8,6} = in根据当前前序序列的第一个结点确定根结点,为 1找到 1 在中序遍历序列中的位置,为 in[3]切割左右子树,则 in[3] 前面的为左子树, in[3] 后面的为右子树则切割后的左子树前序序列为:{2原创 2020-05-28 14:15:42 · 116 阅读 · 0 评论 -
马踏棋 骑士周游问题与优化
马踏棋盘算法介绍和游戏演示1)马踏棋盘算法也被称为骑士周游问题2)将马随机放在国际象棋的8X8棋盘Board[0~ 7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格马踏棋盘游戏代码实现1)马踏棋盘问题(骑士周游问题)实际上是图的深度优先搜索(DFS)的应用。2)如果使用回溯(就是深度优先搜索)来解决,假如马儿踏了53个点,如图:走到了第53个,坐标(1,0) ,发现已经走到尽头,没办法,那就只能回退了,查看其他的路径,就在棋盘上不停的原创 2020-05-28 13:15:04 · 455 阅读 · 0 评论 -
弗洛伊德(Floyd)算法
弗洛伊德(Floyd)算法介绍1)和Dijkstra算法一 样, 弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德命名2)弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径3)迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径。4)弗洛伊德算法VS迪杰斯特拉算法:迪杰斯特拉算法通过选定的被访问项点,求出从出发访问顶点到其他项点的最短路径;弗洛伊德算法中每一个顶点都是出发访原创 2020-05-28 13:14:52 · 382 阅读 · 0 评论 -
和可被K整除的子数组
给定一个整数数组A,返回其中元素之和可被K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <= A[i] <= 100002 <原创 2020-05-27 23:18:28 · 348 阅读 · 0 评论 -
最小覆盖子串
给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。思路和算法本问题要求我们返回字符串 s 中包含字符串 ttt 的全部字符的最小窗口。我们称包含 t 的全部字母的窗口为「可行」窗口。我们可以用滑动窗口的思想解决这个问题,在滑动窗口类型的问题中都会有原创 2020-05-24 17:10:37 · 338 阅读 · 0 评论 -
迪杰斯特拉(Dijkstra)算法
迪杰斯特拉(Dijkstra)算法介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结 点到其他结点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。算法过程设置出发顶点为v,顶点集合V{v,v2,v…}, v到V中各顶点的距离构成距离集合Dis,Dis{d1,d2,d…}, Dis集合记录着v到图中各顶点的距离(到自身可以看作0,v到vi距离对应为di)从Dis中选择值最小的di并移出Dis集合, 同时移出V集合中对应的顶点vi,此原创 2020-05-21 21:56:47 · 421 阅读 · 0 评论 -
求a的高次幂对b的余数
例如 当求3的50次幂对11的余数时若先求3的50次幂 若用int类型会超出范围导致计算结果错误当幂指数更大时 不方便用更大的数据类型 可以优化算法如下:3的50次幂对11取余数可以在3的每一次幂都对11取余数代码如下public static int F(int a ,int b,int p) { int x = 1; for(int i=0;i<b;i++) { ...原创 2020-03-15 16:57:17 · 1680 阅读 · 0 评论 -
求最大公约数 辗转相除法 及最小公倍数
例如 求15与40的最大公约数代码如下:int a = 15, b = 40; for(;;) { if( a==0 ) { System.out.println(b); break; } int t = a ; a = b%a; b = t; }a<b 若求ab最大公约数 则该数与(b-a)与a的最大公约数相同 以此类推当某一数为0时另一数则为最...原创 2020-03-15 15:32:49 · 106 阅读 · 0 评论 -
算法 浮点陷阱
在使用浮点数进行计算时不可直接使用“==”比如System.out.println(0.1+0.2);结果为“0.30000000000000004”当System.out.println(0.1+0.2 == 0.3);结果为false解决措施:1.将浮点型转化为整数2.将其相减的绝对值与某一极小值比较如System.out.println(Math.abs(0.1 + 0.2 - 0...原创 2020-03-07 15:03:31 · 227 阅读 · 0 评论 -
已知漏单后的总金额 找出总订单中漏掉的订单
如 错误总金额为6订单数据为 3,2,4,3,1找出可能漏掉的订单(数组下标)代码如下:// err_sum 有错的和// a 明细// k 当前处理的位置// cur_sum 前边的元素累加和 //b 记录取舍 public static void F(int err_sum, int[] a,int k, int cur_sum, boolean[] b) { if(cu...原创 2020-03-04 23:50:55 · 172 阅读 · 0 评论 -
整数的划分
输入一个数字,例如6;输出,格式如下:6;5+1;4+2,4+1+1;3+3,3+2+1,3+1+1+1;2+2+2,2+2+1+1,2+1+1+1+1;1+1+1+1+1+1.代码如下: public static void F(int n,int[] a,int k){ if(n<=0) { for(int i=0;i<k;i++) System...原创 2020-03-03 20:48:23 · 199 阅读 · 0 评论 -
剔除字符串中指定字符
如给定一字符串“ascadbcadcbdac” 将c 与ab剔除代码如下 public static String handlerStr(String str) { char[] cs = new char[str.length()]; char[] chs = str.toCharArray(); int index =-1; for(int i=0;i<chs.len...原创 2020-02-28 20:46:15 · 640 阅读 · 0 评论 -
以二分查找法计算整数的平方根
二分查找法:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。假设求5的平方根 设定左右值为0,5 中间值为3 3的平方大于5则...原创 2020-02-28 20:28:06 · 764 阅读 · 0 评论 -
给定一数找出数组内哪两项相加等于该数
如数组{2,7,11,15} 与9 数组内0,1项相加为9代码如下:一暴力破解:public static int[] f(int nums[],int target) { int[] res = new int[2]; for(int i=0;i<nums.length;i++) { for(int j=0;j<nums.length;j++) { if...原创 2020-02-27 19:32:39 · 263 阅读 · 0 评论 -
杨辉三角形的第m行数据
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ...................... 代码如下:public class cd1 { public static int F(int m,int n) { if(m==0 || n==...原创 2020-02-26 16:39:24 · 216 阅读 · 0 评论 -
全排列与最大公共子序列长度
将“ABCD”全排列代码如下:public class cd0 { public static void F(char[] data, int k){ if(k==data.length) { for(int i=0;i<data.length;i++) { System.out.print(data[i] + " "); } System.out.pri...原创 2020-02-23 23:46:23 · 138 阅读 · 0 评论