算法题目
诚o
这个作者很懒,什么都没留下…
展开
-
leetcode:224. 基本计算器 I、227. 基本计算器 II
224.标题基本计算器 I通用解法就不说了,这里介绍下用正则表达式来解这道题,基本思路是先用正则表达式计算出括号中的子表达式,最后计算整个表达式。代码如下:import java.util.Arrays;import java.util.regex.*;class Solution { public int calculate(String s) { s = s.replace("...原创 2020-02-06 15:30:20 · 620 阅读 · 0 评论 -
图的深度优先遍历(DFS)和广度优先遍历(BFS)算法分析
1. 深度优先遍历深度优先遍历(Depth First Search)的主要思想是:1、首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;2、当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。在此我想用一句话来形容 “不到南墙不回头”1.1 无向图的深度优先遍历图解以下"无向图"为例:对上无向图进行深度优先遍历,从A开始:...转载 2020-02-04 15:53:43 · 5426 阅读 · 1 评论 -
求序列的熵
题目:给定一个整数序列,存放在数组xs中,长度为n,请计算该序列的熵。 熵的计算方法:对于一个长度为n的序列xs,它包含m+1中不同的取值,s0, s1, …, sm,这些取值对应的出现概率分别是p0, p1, …,pm,则这个序列的熵为H(X) = -(p0log2(p0) + p1log2(p1) + … + pm*log2(pm)). 其中,某个取值出现的概率p的计算方法为:这个取值...原创 2019-01-24 11:57:21 · 5388 阅读 · 0 评论 -
Java中自己实现log2(N)
在刷题过程中需要使用到log2(N),但是java中只有log(double),log10(double)等等函数,这时用换底公式就可以自己实现log2(N).换底公式:所以:log2N=logeN/loge2,logeN代表以e为底的N的对数,loge2代表以e为底的2的对数。实现为:public double log2(double N) { return Math.log(N)/...原创 2019-01-24 10:32:35 · 11481 阅读 · 0 评论 -
leetcode第33题-搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], tar...原创 2019-01-22 12:24:59 · 245 阅读 · 0 评论 -
leetcode第81题-搜索旋转排序数组II
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [2,...原创 2019-01-22 16:02:18 · 226 阅读 · 0 评论 -
非重复字符数组的全排列
public class Main { public static void main(String[] args) { char[] input = { 'a', 'b', 'c' }; range(input, 0, input.length); } //思路:不断从剩余的字符数组中选取一个字符组成新的全排列 private static void range(char[] ...原创 2019-03-03 21:16:17 · 214 阅读 · 0 评论 -
Java中i+=i-=i*=i的运行结果是什么?
i*(2-i)要搞清楚运算的方法和顺序i += x ; ( x为 i-=i*=i )即i = i + xi -= y ; ( y 为 i*=i)即 x = i -yi*=i 即 i = ii即 y = ii所以有i = i + i - ii即 i = i(2-i);转载 2019-03-07 20:51:15 · 7950 阅读 · 0 评论