- 博客(48)
- 收藏
- 关注
原创 广度优先搜索(BFS)和深度优先搜索(DFS)
1.实现方式使用队列实现2.例题《啊哈算法-解救小哈》#include <stdio.h>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <string.h>const int max=1000;struct note{ int x; //横坐标 int y; //纵坐标 int f;
2022-04-18 12:47:24 210
原创 分支限界法
定义:分支限界算法=广度优先搜索+剪枝策略对于所谓的分支限界法和回溯法,我们完全可以更加灵活,请看表格。深度优先 广度优先 约束条件 限界函数 算法 策略 √ √ 回溯法 局部判定 √ √ √ 分支限界法 局部判定 √ √ √ 加限界的回溯法 局部判定 √ 枚举法 全局判定 √ 枚举法
2022-04-15 10:51:14 4277
原创 java volatile禁止指令重排
1、volatile概念 volatile是java虚拟机提供的轻量级同步机制 volatile三个特性:保证可见性 不保证原子性 禁止指令重排2、volatile禁止指令重排(1)指令重排有序性:计算机在执行程序时,为了提高性能,编译器和处理器常常会做指令排重,一般分为以下三种:单线程环境里面确保程序最终执行结果和代码顺序执行结果一致。处理器在进...
2020-04-20 14:22:46 6037
原创 快速幂总结
位运算总结:待续int poww(int a, int b) { int ans = 1, base = a; while (b != 0) { if (b & 1 != 0) ans *= base; base *= base; b >>= 1; } return...
2020-03-22 12:11:19 116
原创 动态规划 LeetCode120. 三角形最小路径和
也是字节跳动遇到的面试题给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)。说明:如果你可以只使用O(n)的额外空间(n为三角形的总行数)来解决这个问...
2020-02-19 20:19:12 188
原创 二叉搜索树、平衡二叉树、红黑树、B树、B+树面试题
二叉搜索树是简单的左子树结点小于等于它的根节点,右子树结点值大于等于它的根结点由于查询效率和树的层次有关,二叉搜索树可能出现都连在左边或者右边,退化成链表所以需要平衡及使树的层次最小的二叉搜索树,成为平衡二叉树。但频繁插入结点会使时间浪费在维持二叉树平衡上,所以出现了红黑树。红黑树使尽量做到平衡,同时兼顾每次平衡的次数。红黑树的调整两种方法:变色和旋转(左旋转和右旋转)JDK的集...
2020-02-08 22:19:55 461
原创 快速幂
leetcode #50Pow(x, n)题目描述:实现pow(x,n),即计算 x 的 n 次幂函数。方法一:快速幂算法(递归)class Solution { public static double myPow(double x, int n) { long N = n; if (N < 0) { ...
2020-02-08 13:17:22 116
原创 Java底层内存原理
Java类加载机制https://www.cnblogs.com/luohanguo/p/9469851.htmlJava对象内存图解
2020-02-07 21:57:55 133
原创 二分查找模板
leetcode35. 搜索插入位置非递归写法class Solution { public int searchInsert(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mi...
2020-02-07 21:24:17 90
原创 Java网络编程总结
一、网络编程基础概念首先理清一个概念:网络编程不等于网站编程,网络编程即使用套接字来达到进程间通信,现在一般称为TCP/IP编程。计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便的互相传递信息,共享硬件,软件,数据信息等资源。计算机网络的主要功能:资源共享信息传输与集中处理均衡负荷与分布处理...
2020-01-29 14:08:32 193
原创 &(与运算)、|(或运算)、^(异或运算)的本质理解
按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5即 0000 0011& 0000 0101 = 00000001因此,3&5的值得1。另...
2020-01-27 20:38:55 1009
原创 回溯法和DFS遇到的问题
leetcode #17. 电话号码的字母组合一.return放哪的问题 1. 放for循环后面import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { String digits =...
2020-01-25 20:11:06 272
原创 回溯算法和DFS联系
概述回溯法是一种选优搜索法(试探法),被称为通用的解题方法,这种方法适用于解一些组合数相当大的问题。通过剪枝(约束+限界)可以大幅减少解决问题的计算量(搜索量)。深度优先搜索(Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程...
2020-01-22 11:19:13 2015
原创 递归的深入理解
递归要点: 递归离不开树的遍历,一叉树,二叉树,三叉树,N叉树有基础后只需记住一张图这个图是单路径递归(最基础的递归),以下三个例题是每一步分两条路径递归(其实也是先递归一条,回溯后再递归另一条,但是可以看作两条路径同时进行)补充:递归和回溯法联系 1. 递归是一种算法结构,回溯是一种算法思想,DFS和回溯法是用递归实现 ...
2020-01-21 17:10:59 2166
原创 回溯算法总结
一.简介 回溯法的基本做法是深度优先搜索,是一种组织得井井有条的、能避免不必要重复搜索的穷举式搜索算法;基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。它可以系统的搜索一个问题的所有解和任意解,是一种既带有系统性又带有跳跃性的搜索算法,有“通用的解题法”之称。可以看作DFS+剪枝函数。适用场景:当遇到某一类问题时,它的问题可以分解,但是又不能得出明确的...
2020-01-20 11:04:37 3215
原创 动态规划之最长公共子序列(LCS)
动态规划法动态规划法(dynamic programming)通常用于求解最优化问题(optimization problem),它适用于最优子结构和重叠子问题。这显然与分治法是不同的,分治法将问题划分为不重叠的子问题,然后分别求解这些子问题,最后将这些问题合并得到最终的解。对于具有公共子问题的情况,分治法会做很多不必要的工作,它会多次求解同一子子问题。动态规划法却不一样,对...
2020-01-19 15:32:25 418
原创 动态规划之最小路径和
给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。来源:力扣(LeetCode)public class Main { publ...
2020-01-19 13:09:28 374
原创 动态规划深入理解
一.动态规划三个难点:1.确定状态表示和状态转移方程(数学问题归纳)2.如何从底向上遍历(控制for循环的i,j,k等遍历之间的关系-->基础代码能力)3.确定初始状态(边界状态)的值(-->细节)https://blog.csdn.net/baidu_28312631/article/details/47418773能用动规解决的问题的特点1) 问题...
2020-01-19 13:06:19 115
原创 动态规划之最长回文串
2.动态规划dp[i][j]表示“以s[i]开始s[j]结尾的回文串的长度。如果这个字符串不是回文串,让dp[i][j]=0”。显然,j>=i,只需往dp填j>=i的部分即可。dp[i][j]的递推公式可以这么表述:(1)首先对dp的对角线元素初始化为1,也就是当i==j时,dp[i][j]=1。这很显然,每个单独的字符其实就是个长度为1的回文串。(2)当...
2020-01-16 19:48:50 246
原创 动态规划之01背包问题
public static void main(String[] args) { int r = 5; int[] v= {6,10,12};//物品的质量 int[] w = {1,2,3};//物品的重量 //构造这个二维数组,其实这个二维数组就是之前图中所画的那个数组 int[][]dp = ne...
2020-01-15 18:38:23 93
原创 一入算法深似海
一、算法思想 (一)分治法(divide and conquer method) 是将待求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止(子问题求解思路一致),再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。......
2020-01-14 17:49:06 206
原创 Java集合详解
https://www.cnblogs.com/chenglc/p/8073049.htmlhashmap底层原理https://zhuanlan.zhihu.com/p/79507868
2020-01-12 16:34:47 48
原创 增强for循环对于“二维”数组
String name[][] = { { "张三", "李四", "王五" }, { "张六", "李七", "王八" }, { "张九", "李十", "王十一" } }; for (String[] str1 : name) { for (String str2 : str1) { System.out.println(str2); }其实对于“二维...
2020-01-12 14:39:53 343
原创 Java字符串比较“equals()、==”及equals()重写和hashcode重写
字符串比较:”==“比较地址”equals()“因为在String类中重写了,所以比较的是字符串内容public class Main { public static void main(String[] args) { String x = new String("Ok"); String y = new String("Ok"); System.out....
2020-01-12 14:14:48 323
原创 浅谈String str = "" 和 new String()的区别
1 创建的字符串变量在内存中的区别两者看似都是创建了一个字符串对象,但在内存中确是各有各的想法。String str1= “abc”; 在编译期,JVM会去常量池来查找是否存在“abc”,如果不存在,就在常量池中开辟一个空间来存储“abc”;如果存在,就不用新开辟空间。然后在栈内存中开辟一个名字为str1的空间,来存储“abc”在常量池中的地址值。String str2 = new S...
2020-01-12 13:19:01 207
原创 N皇后问题
问题描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…...
2020-01-02 16:21:39 75
原创 activiti6.0入门)-28张表以及常用的service讲解
https://blog.csdn.net/weixin_42140580/article/details/95062462
2019-12-10 22:23:24 317
原创 跳转的相对路径问题及绝对路径问题
相对路径与绝对路径这个是tomcat里面设置的路径:http://localhost:8080/stu/****只要是servlet里面的设置的urlPatterns路径,前面都要加上/,这个是必须的要求。例如:@WebServlet(name = “StudentPageServlet”,urlPatterns = “/Student”)如果是在跳转的时候写相对路径只要前面不加/...
2019-12-04 19:33:35 715
原创 Thymeleaf3语法详解
Thymeleaf是Spring boot推荐使用的模版引擎,除此之外常见的还有Freemarker和Jsp。Jsp应该是我们最早接触的模版引擎。而Freemarker工作中也很常见(Freemarker教程)。今天我们从三个方面学习Thymeleaf的语法:有常见的TH属性,四种标准表达式用法,在SpringBoot中的应用。还在等什么,一起来学吧!技术:Thymeleaf,SpringBo...
2019-11-29 11:26:21 658
原创 th:if比较字符串
判断是不是为空:null:<span th:if="${name} != null">不为空</span><span th:if="${name1} == null">为空</span>判断是不是为空字符串: “”<span th:if="${#strings.isEmpty(name1)}">空的</span>判断...
2019-11-28 00:14:12 5882
转载 在SpringMVC 中使用 Thymeleaf 模板引擎时css样式如何引入
https://blog.csdn.net/u012489412/article/details/83572954
2019-11-26 21:57:52 359
原创 阿里云人脸对比API使用
本demo两个类package com.ailiyun.face;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Encoder;import java.io.*;import java.net.HttpURLConnection;import ja...
2019-11-14 13:24:01 1170 1
原创 图片大小和像素分辨率关系
图片是怎么由什么组成的?电脑处理出来的图形通常分2种,一种是矢量图,一种是点阵图,就是图象由无数个点组成。每个点就是PS中说的像素, 每个像素里都由一个颜色表现,所以点阵图是有一个个有颜色的点(像素)排列而成。我们平时看到的文件格式有PSD、TIF、JPG、GIF等都是点阵图,数码相机拍摄的照片就是点阵图。像素是什么?既然图片是由很多点组成,那每个点就是1个像素,一个像素就是一种颜色的...
2019-11-14 13:22:41 8664
转载 2.0-1.1问题详解
前言: 阶码:用于表示小数点在该数中的位置,它是一个带符号的整数。 尾数。用于表示数的有效数值,可以采用整数或纯小数两种形式。解析:double类型占了64位。 第一位为符号位,0为正,1为负。最后52位为十进制转换为二进制后的值。中间11位为阶码,可表示-1024~1023,表示最后52位为2的多少次方。比如最后52位为二进制的1.0*2^1(即二进制10),那么...
2018-11-25 10:23:40 384
转载 利用JAVA SOUND播放mp3,flac,ape格式音乐
import javax.sound.sampled.*;import java.io.File; public class AudioFilePlayer { public static void main(String[] args) { final AudioFilePlayer player = new AudioFilePlayer();...
2018-11-21 21:01:03 763
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人