自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 idea类和方法的注释

【代码】idea类和方法的注释。

2023-06-04 16:29:53 114

原创 T-3.2-把Redis当作消息队列合不合适

把Redis当作消息队列合不合适

2022-10-02 21:23:29 702 1

原创 9.2-Docker使用

Docker使用

2022-09-28 15:01:27 355

原创 dippersinan-note-数组

2022-08-30 23:17:55 99

原创 dippersinan-note-前缀树

前缀树

2022-08-29 23:44:48 105

原创 1-2Java集合

Java集合

2022-05-25 16:51:03 87

原创 1-1Java基础

Java基础

2022-05-25 14:55:27 91

原创 1.Spring和Spring的组成

Spring和Spring的组成

2022-05-21 13:49:42 79

原创 1.Spring和Spring的组成

Spring和Spring的组成

2022-05-21 13:43:41 273

原创 Mybatis

Mybatis01、Mybatis简介什么是MybatisMyBatis 是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。MyBatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache 迁移到了goo

2022-03-20 15:00:42 229

原创 SpringMVC

SpringMVC01、SpringMVC简介是什么是MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。MVC以业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式Model:数据模型,提供要展示的数据,因此包含数据和行为,现在一般都分为:Value Object(数据Dao) 和 服务层(行为Service),也就是模型提供了模型数据查询和模型数

2022-03-18 12:39:39 210

原创 Spring5

Spring501、Spring简介Spring的历史Spring : 春天 —>给软件行业带来了春天2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架Rod Johnson是悉尼大学的博士,然而他的专业不是计算机,而是音乐学Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的框架技术官网:Spring | HomeSpring的优点Spring是一个开源免费的框架,容器(免费且开源是最重要的)Spring

2022-03-06 16:12:44 257

原创 资源-1.中国2000个城市名和对应的拼音

中国2000个城市名和对应的拼音​ 最新需要做搜集1000个城市的气象数据,但是网上只有600多个市级城市的名称和拼音,没办法,就自己写了代码去爬取了2000个城市名(其实没有2000个,我把名字长度大于4的都排掉了,实际是1914个)。​ 看在博主这么辛苦的份上,而且是免费分享给大家的(不知道为什么总有些人设置成资源付费下载),是不是应该点个赞啊!北京 beijing东城 dongcheng西城 xicheng朝阳 zhaoyang丰台 fengtai石景山 shijingshan海淀

2022-01-04 10:45:11 4864

原创 数据结构与算法-36.Pow(x,n)

36、Pow(x,n)题目36.0、无脑解法我反手一个pow//无脑解法double myPow0(double x, int n){ return pow(x, n);}时间复杂度:不知道,有兴趣可以去查空间复杂度:不知道,有兴趣可以去查实际上,这种直接调pow是没有下面两种方法好的36.1、快速幂+递归对于30次方,可以看作是15次方的平方15次方是7次方的平方再乘以1次方7次方是3次方的平方再乘以1次方3次方是1次方的平方再乘以1次方1次方就是1次方。。

2021-12-07 22:02:19 1041

原创 数据结构与算法-35.Excel表列序号

35、Excel表列序号题目35.0、进制转换这题其实很简单。。。写的时候注意不要超出int范围,要***先减后加***int titleToNumber0(string columnTitle){ int result = 0; for (auto& i : columnTitle) result = result * 26 + (int)(i - 'A') + 1; return result;}时间复杂度:O(n)空间复杂度:O

2021-12-06 23:37:02 289

原创 数据结构与算法-34.阶乘后的零

34、阶乘后的零题目34.0、暴力比如对于1000,你就从1乘到1000呗,当遇到超出int长度的时候(提前用除法判断是否超出),把结尾的零清掉,顺便把后几位全部砍掉,比如当数是1783233200,先去掉0,得到17832332,直接砍掉后5位得到178。其实这种做法好像是有问题的,我没有试过,有兴趣的可以去写一写。时间复杂度:我只能说有点高空间复杂度:O(1)没有使用额外空间34.1、提取因子很容易发现,只有当一个数以5或者0结尾的时候才会出现乘积为0的情况对于30,其中以0或5

2021-12-06 23:18:04 139

原创 数据结构与算法-33.快乐数

33、快乐数题目33.0、暴力解法先写一个函数来计算每个位置的平方和,该函数对于下列三种方法通用int calculate(int n){ int m = 0; while (n) { m += (int)pow(n % 10, 2); n /= 10; } return m;}暴力解法比较实际,用一个哈希集合来记录每次的数从而来判断是否存在循环//暴力解法bool isHappy0(int n) {

2021-12-06 20:50:28 113

原创 数据结构与算法-32.单词搜索

32、单词搜索题目32.0、暴力解法(回溯)这个我没有找到其他的更优的解法(即使有,也是相当复杂),只能用一般的深度优先搜索来解题了,把标记数组套上回溯的壳子,就OK了。public: //暴力解法 bool exist(vector<vector<char>>& board, string word) { int rows = board.size(), cols = board[0].size(); v

2021-12-06 18:23:23 288

原创 数据结构与算法-31.子集

31、子集题目30.0、迭代法实现子集枚举因为题目中限定条件是数组大小不大于10,所以可以用二进制的方法来解题对于序列【1,3,6,7,8】大小为5,所有的组合是2的5次方,也就是32种那么用二进制来表示32就是100000,其中00000表示空数组00010表示数组里只有3(不是7)11111表示数组里有8,7,6,3,1遍历小于100000的所有二进制,找到为1位置对应的数,添加到数组里//迭代法实现子集枚举vector<vector<int>> su

2021-12-03 16:25:56 129

原创 数据结构与算法-30.全排列

30、全排列题目30.0、回溯法直接枚举所有可能,在递归的的时候通过哈希集合来判断,该数是否已经使用public: vector<vector<int>> permute0(vector<int>& nums) { vector<vector<int>> result; unordered_set<int> data; vector<int&gt

2021-12-02 13:30:34 179

原创 数据结构与算法-29.括号生成

29、括号生成题目29.0、暴力解法枚举出所有的可能,符合条件的写入结果集里面public: //暴力解法 vector<string> generateParenthesis0(int n) { vector<string> result; string temp = ""; depth(result, 2 * n, temp); return result; }priv

2021-12-01 21:08:27 599

原创 数据结构与算法-28.电话号码的字母组合

28、电话号码的字母组合题目28.0、回溯(深度优先)和树的深度优先遍历很像 vector<string> letterCombinations0(string digits) { vector<string> result; if (digits.empty())return result; unordered_map<char, string> data = { {'2',"abc"},{'3

2021-11-30 15:40:12 180

原创 数据结构与算法-27.最长上升子序列

27、最长上升子序列题目27.0、动态规划用data[i]记录以nums[i]为结尾的序列的最长上升子序列长度状态转移方程为:data[i] = nums[i] > nums[x] && data[i] = max(data[i], data[x] + 1)其中x表示0-i-1,左右都为闭区间int lengthOfLIS0(vector<int>& nums){ int size = nums.size(); vector&lt

2021-11-29 12:50:41 241

原创 数据结构与算法-26.零钱兑换

26、零钱兑换题目26.0、记忆化搜索其实就是暴力解法,比如对于金额20,硬币面值为【1,2,5】看看15需要多少硬币,再看看10需要多少硬币,再看看5需要多少硬币。算出需要4枚看看18需要多少硬币,再看看13需要多少硬币,再看看8需要多少硬币,再看看3需要多少硬币,再看看1需要多少硬币。算出6枚看看19需要多少硬币,再看看14需要多少硬币,再看看9需要多少硬币,再看看4需要多少硬币,再看看2需要多少硬币。算出6枚所以结果是4枚。上述例子可以正好凑够金额,所以没有分支,如果金额是20,

2021-11-26 17:36:26 486

原创 数据结构与算法-23.前K个高频元素

23、前K个高频元素题目23.0、基于快排先遍历一遍数组,用哈希映射来记录每个值对应的频率。把哈希映射转化为vector<pair<int,int>>或者二维数组的格式。然后就可以使用和查找数组中第K大元素相同的方法来找到前K大频率的分割下标。private://产生随机数,将该随机下标的数与最后一个数调换位置,然后将数组分为左右两部分,返回分界线的下标int randomPartition(vector<pair<int, int>>&

2021-11-25 21:17:34 744

原创 数据结构与算法-25.不同路径

25、不同路径题目25.0、动态规划f(x,y)表示到(x,y)的位置有多少种走法状态转移方程为f(x,y) = f(x - 1,y) + f(x,y - 1)所以你可以创建一个m*n大的数组来记录到每一个位置有多少种走法但是这种方法太亏了,因为对于3*3的序列【【1,1,1】【1,2,3】【1,3,6】】一行一行从左向右遍历,会发现,每一行的数组只用了一次,那为什么不循环利用呢int uniquePaths0(int m, int n) { vector<i

2021-11-23 16:34:32 167

原创 数据结构与算法-24.跳跃游戏

24、跳跃游戏题目24.0、贪心算法对于序列【2,3,1,1,4】,维护一个rightMost,表示能够到达的最右端的坐标rightMost = max(rightMost, nums[i] + i)在遍历的过程中注意当rightMost < i时,返回falsebool canJump0(vector<int>& nums){ int size = nums.size(); int rightMost = 0; for (int i =

2021-11-23 15:58:01 2417

原创 数据结构与算法-22.搜索二维矩阵 II

1、搜索二维矩阵 II题目1.0、暴力解法直接遍历整个二维数组,看一下有没有目标数bool searchMatrix0(vector<vector<int>>& matrix, int target){ for (auto& i : matrix) for (auto& j : i) if (j == target)return true; return false;}时间复杂度:O

2021-11-19 13:55:16 282

原创 数据结构与算法-21.搜索旋转排序数组

21、搜索旋转排序数组题目21.0、暴力解法直接遍历一遍找答案int search0(vector<int>& nums, int target) { for (size_t i = 0; i < nums.size(); i++) if (nums[i] == target)return i; return -1;}时间复杂度:O(n)空间复杂度:O(1)21.1、二分查找虽然旋转了,但是还是两部分有序的序列啊只不

2021-11-13 22:29:53 499

原创 数据结构与算法-20.在排序数组中查找元素的第一个和最后一个位置

20、在排序数组中查找元素的第一个和最后一个位置题目20.0、暴力解法这道题真滴非常简单,遍历一遍数组,记录目标数的第一个和最后一个就OK了,不会一遍遍历,那就两遍遍历,一遍找开始,一遍找结束。vector<int> searchRange0(vector<int>& nums, int target) { if (nums.empty())return { -1,-1 }; vector<int> result; for

2021-11-11 18:22:36 477

原创 数据结构与算法-19.合并区间

19、合并区间题目19.0、暴力解法对每一个区间都进行和其他区间比较,最后筛选不重复集合即可时间复杂度:O(n平方)空间复杂度:O(1)不考虑答案占用空间19.1、对子数组进行排序按照子数组的第一个数字对大数组进行排序,然后就可以通过简单的判断来进行合并数组vector<vector<int>> merge1(vector<vector<int>>& intervals) { int size = intervals

2021-11-11 13:21:05 386

原创 数据结构与算法-18.数组中的第K个最大元素

18、数组中的第K个最大元素题目18.0、暴力解法直接sort排序int findKthLargest0(vector<int>& nums, int k) { sort(nums.begin(), nums.end()); return nums[nums.size() - k];}时间复杂度:O(n平方)空间复杂度:O(1)18.1、基于快速排序的选择方法利用sort排序的原理,进行快速选择,对于数组【3,2,3,1,2,4,5,5,6

2021-11-10 16:35:59 360

原创 数据结构与算法-17.寻找峰值

17、寻找峰值题目17.0、暴力解法先判断第一个和最后一个,然后判断每一个是不是峰值(正常人一般都会这么写)int findPeakElement0(vector<int>& nums) { int size = nums.size(); if (size == 1 || nums[0] > nums[1])return 0; if (nums[size - 1] > nums[size - 2])return size - 1;

2021-11-09 14:06:58 445

原创 数据结构与算法-15.从前序与中序遍历序列构造二叉树

15、从前序与中序遍历序列构造二叉树题目15.0、递归解法先序序列【3,9,20,15,7】中序序列【9,3,15,20,7】先序的第一个就是整个树的根中序中以根为分界线,左边为左子树的中序,右边为右子树的中序根据在先序序列里找到的根,把中序序列分为两个子树的中序序列然后重复上述步骤至于怎么在先序序列中找到子树的根先序序列可以拆分为【3】,【9】,【20,15,7】第一块是整个树的根,第二块是左子树的根,第三块是右子树的根可以根据中序序列来判断左子树有多少个节点,这样就可

2021-11-09 11:34:30 154

原创 数据结构与算法-16.颜色分类

16、颜色分类题目16.0、暴力你可以直接用sort()函数排序,或者自己写一个冒泡排序或者其他什么的排序。时间复杂度:O(n平方)或者是log n空间复杂度:O(1)16.1、单指针遍历两次第一遍遍历把所有的0都移动到开头(记得设置一个变量来记录最后一个0到哪个位置了)第二遍遍历把所有的2都移动到结尾(记得设置一个变量来记录最前一个2到哪个位置了)时间复杂度:O(n)空间复杂度:O(1)16.2、双指针遍历一次对于上面的遍历两次,完全可以只遍历一次时实现0移到开头,2

2021-11-08 18:07:58 138

原创 数据结构与算法-14.填充每个节点的下一个右侧节点指针

14、填充每个节点的下一个右侧节点指针题目14.0、广度优先搜索借用二叉树的层次遍历,在队列里把保存值去掉,换成连接指针即可Node* connect0(Node* root) { if (!root)return root; Node* resultNode = root; queue<Node*> data; data.push(root); while (!data.empty()) { int dataSiz

2021-11-08 17:42:17 83

原创 数据结构与算法-13.二叉树中第K小的元素

13、二叉搜索树中第K小的元素题目13.0、记录子树的节点数就像名字一样,记录每个节点的子节点有多少个(包括自己),然后就可以判断目标在哪里了这种方法其实挺鸡肋,完全可以中序遍历生成数组,方便频繁查询。int kthSmallest0(TreeNode* root, int k){ MyBst myBst(root); return myBst.kthSmallest(k);}class MyBst{ private: unordered_map&lt

2021-11-07 20:58:06 272

原创 数据结构与算法-12.岛屿数量

12、岛屿数量题目12.0、广度优先遍历从一个点开始,进行广播一样的遍历,比如示例1,发现第一个数是一个岛,那么从【0,0】开始广播,广播依次经过【0,1】,【1,0】【0,2】,【1,1】,【2,0】【0,3】,【2,1】【1,3】每到一个地方,就把那个坐标对应的位置变为0使用队列或者栈来存储下次广播到达的坐标int numIslands0(vector<vector<char>>& grid) { stack <pair<i

2021-11-07 15:17:35 202

原创 数据结构与算法-11.二叉树的锯齿形层序遍历

11、二叉树的锯齿形层序遍历题目给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],​ 3/ \9 20/ \ / \nn 15 7返回锯齿形层序遍历如下:[[3],[20,9],[15,7]]11.0、一般解法正常的层序遍历,然后如果是偶数层的话就反转一下数组,非暴力不合作。vector<vector<

2021-11-02 21:07:17 191

原创 JavaWeb-JSP

JSP什么是JSPJava Service Pages:java服务器端页面,和servlet一样,用于动态web技术最大的特点:写JSP和写HTML一样区别HTML只给用户提供静态的数据JSP页面中可以嵌入java代码,为用户提供动态数据JSP原理JSP本质上就是一个servlettomcat的work目录下存放的就是JSP文件自动生成的XXX_jsp.java文件(还有编译的class文件)打开xxx_jsp.java文件,发现调用的还是servlethtml语句全部

2021-11-01 22:36:30 146

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除