自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 带头双向循环链表的实现

尾删如上图,可以记录删除节点的前一个节点,链接前一个节点和头节点的连接,然后free掉删除节点。首先将尾部节点和新节点进行链接,然后将新的尾节点和头节点进行链接。示意图如上,可以先记录pos的前一个节点,然后将新节点和pos链接,最后前一个节点和新节点链接,注意顺序。注意,在链表初始化的时候,要获得链表头节点,此时需要将头节点的next和prev都设置为头节点自己。头插如上图,可以先对新节点和head->next进行链接,然后head和新节点进行链接。打印要注意头节点不算,然后注意停止条件。

2023-08-21 19:30:33 78

原创 小乐乐与字符串CHN

遍历这个字符串,如果遇到C,进行c的统计,如果遇到H,那么ch会增加c个,如果遇到N,那么chn会增加ch个。

2023-06-17 17:11:32 88

原创 序列相关习题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-06-15 21:38:39 92

原创 &和^位操作

拓展:判断一个数是否为2的n次方,n&(n-1)==0。

2023-06-15 12:56:46 65

原创 求2~n之间所有素数的两种方法(试除法和筛选法)

用c语言实现了两种求2~n之间所有素数的方法。

2023-06-14 21:50:42 1199

原创 在有序序列中插入一个数(c实现)

在此类问题中,需要考虑边界条件。并且从前往后进行判断可以减少时间复杂度。

2023-06-14 19:28:02 785

原创 删除链表倒数第n个节点

算法笔记

2022-12-13 14:01:55 67

原创 mybatis反向生成代理工具

mybatis的反向代理工具

2022-10-27 20:24:43 636

原创 子集/组合问题2

目录1. 题目描述1.1 思路1.2 代码1. 题目描述给你一个无重复元素的整数数组 candidates 和一个目标和 target,找出 candidates 中可以使数字和为目标数 target 的所有组合。candidates 中的每个数字可以无限制重复被选取。1.1 思路无重符可以复选,相当于画出类似于全排列的数,可以不断往下延申,如果当前和大于目标和,直接return1.2 代码List<List<Integer>> res = new LinkedList&

2022-04-10 18:31:49 219

原创 子集/组合题相关1

目录1.组合11.1 思路1.2 代码2.组合22.1 思路2.2 代码3.子集题3.1 思路3.2 代码4.子集题24.1 思路4.2 代码5.排列5.1 思路5.2 代码1.组合1给定一个不含重复数字的数组 nums,返回其所有可能的全排列。1.1 思路本题和子集类型的题目类似,只不过不需要start来控制不出现之前重复的数字,任何没出现过的数字都有可能出现,所以使用used数组来标识某个数字是否出现过1.2 代码LinkedList<LinkedList<Integer>

2022-04-10 17:16:13 488

原创 子集问题笔记

目录1.子集11.1.思路1.2.代码2.子集22.1思路2.2代码1.子集1输入一个无重复元素的数组 nums,其中每个元素最多使用一次,请你返回 nums 的所有子集。1.1.思路回溯的思想,每次回溯的时候不允许出现前面已经出现过的数字,用start进行控制1.2.代码LinkedList<LinkedList<Integer>> res = new LinkedList<>(); LinkedList<Integer> track

2022-04-10 13:59:47 316

原创 快速排序,归并排序

目录1.快速排序如何记忆快速排序2.归并排序3.排序链表1.快速排序如何记忆快速排序1.首先明确函数,快速排序是基于一个pivot的,所以应该需要对数组的一部分进行排序,所以应该传入left和right范围2.需要一个函数来确定partition,确定一个pivot为nums[left],选择第一个元素,然后确定这个元素在子数组中的位置,是基于交换进行的,所以还需要swap函数。找到第一个比pivot大的和比pivot小的数,然后进行交换。3.最后循环跳出的时候,把pivot放到右指针的位置代码

2022-04-04 00:41:33 382

原创 数组中出现次数超过一半的数字

目录1.题目描述2.思路3.代码4.总结1.题目描述2.思路这道题有三个思路1.使用哈希表2.进行排序,中位数就是3.摩尔投票法个人认为摩尔投票法就是元素相互进行碰撞,但是代码硬是要细究还是比较难以记忆,所以个人给出了一个理解。记住当vote为0的时候,这个时候是中立的,可以把当前元素设置为candidate,并且vote+1,若当前元素等于candidate,则vote++,若当前不等于candidate,则vote–3.代码public int majorityElement(in

2022-03-30 01:09:02 41

原创 栈的压入和弹出序列

目录1.题目描述2.思路3.代码4.总结1.题目描述2.思路考虑使用一个辅助站模拟入栈出栈的顺序。初始化一个栈,然后按照pushed序列逐个入栈,和poped序列进行比较,判断结果。思考思路,对于pushed中的每一个num都要入栈一次,当栈非空并且栈顶元素等于poped中的元素,则元素出栈并且poped的索引++,最后若栈为空则为正确的出栈顺序。3.代码public boolean validateStackSequences(int[] pushed, int[] popped) {

2022-03-30 00:29:50 62

原创 调整数组顺序使奇数位于偶数前面

目录1.题目描述2.思路3.代码4.总结1.题目描述2.思路思路:交换的思想,双指针,如果左边出现了偶数,右边出现了奇数,则交换3.代码public int[] exchange(int[] nums) { int left = 0,right = nums.length-1; while (left<right){ while (nums[left]%2==1&&left<right) left++;

2022-03-29 22:39:18 36

原创 顺时针打印矩阵

目录1.题目描述2.思路3.代码4.总结1.题目描述2.思路这样考虑一个矩阵,第一维是一行一行的的行向量,行向量的范围是 l 到 r ,第二个维度是一列一列的向量,列向量的范围是 t 到 b每次从左到右遍历完一行,则 t+1,加完1后如果 t 大于b则跳出循环每次从上到下遍历完一列,则 r-1,减完1后如果 r 小于l 则跳出循环每次从右到左遍历完一行,则 b-1,减完1后如果 b 小于 t 则跳出循环每次从下到上遍历完一列,则 l+1,加完1后如果 l 大于 r 则跳出循环3.代码

2022-03-29 22:31:48 67

原创 剪绳子,大数取余法

目录1.题目描述2.思路3.代码4.总结1.题目描述2.思路经过数学推导,当绳子尽可能地剪成长度为3的段的时候,结果最大,因此1.当n<=3时,返回n-12.当余数为0时,返回3^a3.当余数为1时,返回3^(a-1)44.当余数为2时,返回3^a2大数求余可以写出求余数的代码public long getRemain(int a,int x){ long rem = 1; while (x-->0){ rem =

2022-03-29 19:09:05 81

原创 机器人的运动范围

@TOC1.题目描述思路2.思路3.代码4.总结

2022-03-28 20:46:47 489

原创 矩阵中的路径

矩阵中的路径题解题目描述思路代码题目描述思路矩阵dfs和回溯,退出递归的条件是,超出了矩阵的边界或者遍历到了与目标字符串不同的字符。每一次遍历的时候,遍历完当前的字符需要把当前的字符改为’\0’,可以保证下一次递归不会按原路返回。下一次的递归是沿着上下左右递归,因为原来的方向上一定是’\0’,其实只有3个方向。本次递归结束需要改回原来的字符。回溯的思想。时间复杂度计算:一次dfs需要进行3^k,因为有三个方向,字符串长度为k矩阵的大小为m×n,故最终的时间复杂度为O(3^kmn)代码boo

2022-03-28 19:29:19 58

原创 单调栈和单调队列

文章目录1.单调栈2.单调队列总结1.单调栈思路:单调栈一般用于next greater number的问题。public int[] nextGreaterElement(int[] nums1, int[] nums2) { int n = nums2.length; LinkedList<Integer> list = new LinkedList<>(); Map<Integer,Integer> map =

2022-03-21 23:15:18 44

原创 动态规划相关

文章目录1.编辑距离2.最长递增子序列3.最大子数组的和4.最长公共子序列5.两个字符串的删除操作6.两个字符串的最小ASCII删除和7.总结1.编辑距离思路:从后往前分别遍历两个字符串,对于每一个i,j位置,考虑把word1变换成word2,所以对于每一个i来说,有三个选择,选择删除,选择插入,选择替换。dp函数表示为返回 s1[0…i] 和 s2[0…j] 的最小编辑距离。basecase为i或j走到-1,则把剩下的全部删除或者全部插入Map<String,Integer> ma

2022-03-20 10:23:16 398

原创 快速选择算法

文章目录1.二叉堆2.快速选择算法2.1回顾快速排序算法2.2快速选择算法总结1.二叉堆思路:将节点一个一个的插入二叉堆(优先队列),当堆中元素多于k个时,删除堆顶元素。每个节点都过一遍之后,再取堆顶元素。public int findKthLargest(int[] nums, int k) { PriorityQueue<Integer> que = new PriorityQueue<>(); for (int num : nums) {

2022-03-16 17:25:52 884

原创 图相关算法

文章目录1.课程表总结1.课程表思路:根据矩阵进行建图,对图进行遍历,判断图中是否有环建图代码public List<Integer>[] buildGraph(int numCourses,int[][] prerequisites){ List<Integer>[] graph = new LinkedList[numCourses]; for (int i = 0; i < numCourses; i++) {

2022-03-16 16:36:58 29

原创 简单题记录

文章目录1.汉明距离2.比特位计数总结1.汉明距离思路:1.先对x和y进行异或^,则不同的位置表示为12.计算1的个数2.1使用内置函数2.2 x = x&(x-1)将x最后一个1变为0public int hammingDistance(int x, int y) { int z = x^y; int res = 0; while (z!=0){ z = z & (z-1); r

2022-03-15 17:52:42 31

原创 树的子结构

文章目录1.树的子结构总结1.树的子结构思路:1.写一个辅助函数,判断树a是否包含树b2.遍历树A的每一个节点,判断是否包含树Bpublic boolean isSubStructure(TreeNode A, TreeNode B) { if (A==null || B == null) return false; if (A.val == B.val) return aContainsB(A,B) || isSubStructure(A.left,B) || i

2022-03-11 14:59:54 31

原创 二叉搜索树与双向链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录非递归中序遍历代码框架二叉搜索树转化为双向链表总结非递归中序遍历代码框架二叉树的非递归中序遍历,遍历两个节点pre和cur,讲pre的后继指向cur,将cur的前驱指向pre非递归中序遍历的基本框架public void inOrderTravesal(Node root) { LinkedList<Node> sk = new LinkedList(); while (root.

2022-03-11 14:03:34 234

原创 二叉树中的回溯、中序遍历

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1、 二叉树中和为某一值的路径总结1、 二叉树中和为某一值的路径 List<List<Integer>> res = new LinkedList<>(); LinkedList<Integer> track = new LinkedList<>(); public List<List<Integer>> pathSum(Tre.

2022-03-11 13:57:36 767

原创 二叉树或搜索树的最近公共祖先

文章目录1、二叉搜索树的最近公共祖先2、二叉树的最近公共祖先1、二叉搜索树的最近公共祖先思路:如果root节点比两个节点都大,到root的左子树中去找公共祖先,如果root节点比两个节点都小,到root的右子树中去找公共祖先。如果一个比root大,一个比root小,那么返回rootpublic TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if (root==null) return nul

2022-03-10 21:09:33 189

原创 二叉树刷题

文章目录前言一、计算二叉树的深度二、计算二叉树节点的个数三、判断是否是平衡二叉树四、二叉搜索树的第k大节点前言一、计算二叉树的深度public int maxDepth(TreeNode root) { if (root==null) return 0; int left = maxDepth(root.left); int right = maxDepth(root.right); return left>right?left+

2022-03-10 20:26:52 95

原创 删除覆盖的区间

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档刷leetcode的记录1.区间问题-删除被覆盖的区间Arrays.sort的使用2.总结1.区间问题-删除被覆盖的区间先将数组(二维)按起点升序排序,按终点降序排序Arrays.sort的使用Arrays.sort(intervals,(a,b)->{ if (a[0] == b[0]){ return b[1]-a[1]; }

2022-03-03 22:39:43 110

原创 短视频后台管理开发整理

@短视频后台管理系统开发A child container failed during start发现原因在service的pom文件中重复导入了common的配置导致错误

2022-03-03 21:53:56 358

原创 pta1003

主要是对题目中第三点的理解:个人理解,若XPATX类型通过,说明PAT两侧的A的数目是相等的;故,若aPbTc通过那么aPbATca通过意味着PAT中每增加一个A,在c的右边增加一个P左侧的字符串可认为a=c,则aP(1+b)T(c+ba)=aP(1+b)T(a+ba),故可得PT中间A的数量*P左侧A的数量=T右侧A的数量我得到的代码为:#include<iostream&gt...

2020-01-20 21:02:55 374 1

原创 pta-1002题

走过的坑:有一定基础的同学知道输入的数字超过了一般int,long型的位数。起初写了一个错误的代码,没有考虑用char,小范围的n可以通过:#include<iostream>#include<math.h>using namespace std;int main(){ char *shuzi[10]={(char*)"ling",(char*)"yi",(...

2020-01-20 18:32:16 249

原创 python使用render,下载chromium速度慢的问题

手动下载chromium1.创建一个py文件,输入import pyppeteer.chromium_downloaderprint(‘默认版本是:{}’.format(pyppeteer.chromium_revision))print(‘可执行文件默认路径:{}’.format(pyppeteer.chromium_downloader.chromiumExecutable.get(‘...

2020-01-18 22:52:50 884

原创 爬虫+自动化

爬虫+自动化from selenium import webdriverimport timewb=webdriver.Chrome()wb.get(‘http://www.baidu.com’)print(wb.title)time.sleep(5)wb.quit()#无界面模式from selenium import webdriverfrom selenium.webdr...

2020-01-17 15:29:36 855

空空如也

空空如也

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

TA关注的人

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