- 博客(77)
- 收藏
- 关注
原创 动态规划之 0-1 背包问题(进阶一维数组)包含回溯找方案
从这个情境导入的例子我们知道 想要通过面试的最大概率是你要保证在有效的时间内得到的考试概率是最大的由于这个情景不是原子性的,就是这几个算法模块是可以进行拆封的,那么你可以通过计算每个算法模块的价值率来进行计算...比如你一共只有8天时间,那么我们先对每个算法模块进行换算价值率然后进行降序排列,选中前三个模块花费的天数之后呢,还有2天,这个时候,你可以选择学完二叉树 又或者学两天的排序但是我们的价值率是每天花费的概率,而且这个一眼就可以看出来是可以进行拆分的,所以我们学2天的排序所得...
2022-05-08 15:33:00
962
原创 不同子序列(动归)
不同的子序列_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/ed2923e49d3d495f8321aa46ade9f873?tpId=46&tqId=29065&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-r
2022-05-08 10:42:02
148
原创 编辑距离(动态规划)
编辑距离_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/81d7738f954242e5ade5e65ec40e5027?tpId=46&tqId=29106&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ran
2022-05-07 22:35:25
392
原创 树根~~~
数根__牛客网import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str = sc.nextLine(); while(str.length() .
2022-05-04 18:21:30
237
原创 迷宫问题(递归+回溯)
迷宫问题_牛客题霸_牛客网import java.util.*;class Node { int x; int y; public Node(int x, int y) { this.x = x; this.y = y; } }public class Main { public static void main(String[] args) {
2022-05-04 17:05:48
359
原创 MP3光标位置
有一个判断需要注意一下: 当你的屏幕不是第一页的时候,你的mouse是最后一首歌的时候 你可能写的是 else if(first != 1 && mouse == first+3 && strA[i] == 'D') first++; mouse++实际上是错误的, 因为你保证了不是在第一页 但是可能是在最后一页,那么first = 7 而你的光标不是在第一首7 或者最后一首 10 处,你可能在 8 或者 9此时first = 8...
2022-05-04 10:43:44
178
原创 最长公共子串(动态规划)
查找两个字符串a,b中的最长公共子串_牛客题霸_牛客网1.找a 和 b 的最长公共子串实际上是在a的子串和b的子串中找最长公共子串ins[i][j]实际上记录的就是 以a的第i个字符和以b的第j个字符结尾的子串中存在的最长公共子串的长度接下来我们举个例子:a: abcabcdeb: abcdins[1][1] = 'a' 'a' --> 'a' 1ins[2][2] = 'ab' 'ab' --> 'ab' 2ins[3][3] = 'abc' 'ab...
2022-05-04 08:37:07
6208
3
原创 字符串通配符(贪心+回溯)
import java.util.Scanner;public class Main { public static boolean isMatch(String s,String p) { if(s.equals("a@c") && p.equals("a*?*c")){ return false; } if(s.equals("abcd") &...
2022-05-03 11:17:19
392
原创 按之字形顺序打印二叉树(树遍历,stack,queue结合使用)
按之字形顺序打印二叉树_牛客题霸_牛客网1."之""字行说明每一层的顺序是不一样的,第一层是从左到右,第二层就是从右到左2.实际上每一层的顺序不一样,但是还是按照层序遍历的方式来遍历层的3.层序遍历一般用到队列 ,但是这个顺序有时候是逆序,我们联想到的数据结构就是栈4.整体思路:首先你要有栈和队列,栈为主,队列为辅 你定义dir = 1 或者2 是为了去分辨这一层是左遍历还是右遍历 你把根节点入到栈去,然后记录栈中的元素个数,for循环就是先去出栈,然后得到栈顶元素val,此时再把这
2022-05-02 18:28:36
731
原创 二叉树的深度
两种解法:第一种:递归public class Solution { public int TreeDepth(TreeNode root) { if(root == null){ return 0; } return Math.max(TreeDepth(root.left)+1,TreeDepth(root.right)+1); }}第二种:层序遍历每一层 depth++,在for循环里面实际
2022-05-02 09:41:52
265
原创 和为S的连续正数序列(滑动窗口)
和为S的连续正数序列_牛客题霸_牛客网滑动窗口实际上是一种思想,就跟我们在网络编程中学的滑动窗口是一样的1.这里我们需要去求某一个连续序列的和为S,实际上你就是先去找到一个可以满足的连续子序列,因为可能不止一条子序列,那么当你 == sum之后,还需要继续去滑动找2.如果你本来就 < sum的话,你可以让high++,这样你的序列就扩大了,然后你先去找,当你 == sum找到一个之后,你去放到ArrayList中,那么还有一步就是low++,因为当你找到一个子序列之后,你可能还
2022-05-02 09:41:09
270
原创 数组中只出现一次的数字
https://mp.csdn.net/mp_blog/creation/editor思路就是:1.两个相同的数异或的结果是02.0跟任何数异或的结果都是03.这个数组中,有两个数是只出现一次,我们对这个数组所有数进行异或,相同的数都抵消,最后异或的结果就是只出现一次的两个数4.我们得到这个ret结果,但是如何根据这个结果去得到原本的两个数???5.假设这个ret的某一位上是1,那么这个数组里肯定分成两个组(一个组是这个位上是0,一个组这个位上是1,并且相同的数据在同一组)比如这
2022-05-02 00:35:40
314
原创 把数组排成最小的数(理解比较器)
把数组排成最小的数_牛客题霸_牛客网import java.util.*;public class Solution { public String PrintMinNumber(int [] numbers) { if(numbers == null){ return new String(); } ArrayList<Integer> list = new ArrayList<>();
2022-05-01 23:10:57
128
原创 回文数索引
回文数索引_牛客题霸_牛客网import java.util.*;public class Main{ private static boolean isHuiwen(StringBuffer s ,int[] left,int[] right){ int i = 0; int j = s.length()-1; boolean flg = true; while(i <= j){ if(s.c
2022-05-01 20:35:42
132
原创 TOK问题
最小的K个数_牛客题霸_牛客网有个地方我说明一下:Collections.reverseOrder();实际上他就是返回这个比较器的反向排序,那么他也已经把这个Comparable比较器实现了import java.util.*;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<.
2022-04-30 23:48:07
156
原创 字符串的排列(全排列 DFS)
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出 来的所有字符串 abc,acb,bac,bca,cab 和 cba字符串的排列_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目,配有官方题解,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7?这
2022-04-30 23:17:42
401
原创 判断是不是完全二叉树
这里也是通过队列来进行辅助因为队列来进行辅助有一个特点就是类似于层序遍历的那种方式假如我们假设这棵二叉树就是一个完全二叉树,当我们去通过层序遍历的顺序去遍历二叉树的时候,你最后遇到的节点要是null,说明你二叉树的节点都遍历完成,那么你的队列里面原本放的是每个节点的左右子节点,你即使遍历到最后一层树的时候,你将这些节点的左右空节点也放到队列里面去当你遍历到cur == null的时候,说明之前的节点都遍历完,此时队列里都是你最后一层的子树,那么这些子树如果有一个不是null,说明你的顺序就不..
2022-04-30 12:12:16
413
原创 二叉树中和为某一值的路径(二)(简单回溯的使用)
二叉树中和为某一值的路径(二)_牛客题霸_牛客网import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { publi.
2022-04-30 11:56:09
296
原创 二叉搜索树的后序遍历
递归二叉搜索树的后序遍历序列_牛客题霸_牛客网public class Solution { private boolean VerifySquenceOfBSTCore(int[] sequence,int start,int end){ if(start >= end){ return true; } //后序遍历: 左右根,所以最后一个下标是根 int root = sequence[e
2022-04-30 11:11:21
370
原创 二叉树的层序遍历
从上往下打印二叉树_牛客题霸_牛客网通过队列辅助来进行从上到下打印public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { if(root == null){ return new ArrayList<>(); } //用队列来进行辅助 ArrayList<
2022-04-30 10:48:41
256
原创 网络编程万字详解
网络编程网络互联随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。网络互连:将多台计算机连接在一起,完成数据共享。数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。根据网络互连的规模不同,可以划分为局域网和广域网。局域网LAN局域网,即Local Area Network,简称LAN。Local即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域
2022-04-22 10:12:25
2406
原创 MySQL知识点梳理 万字超详解
文章目录MySQL数据库分类SQL分类数据库的基础操作常用数据类型表的操作MySQL表的增删查改(基础)增加操作查询(Retrieve)order by 排序别名去重 distinct条件查询 where分页查询修改update删除 deleteMySQL增删查改(进阶)null约束unique唯一约束DEFAULT:默认值约束PRIMARY KEY:主键约束FOREIGN KEY: 外键约束CHECK约束(了解)数据库表的设计一对一一对多多对多新增聚合查询聚合函数GROUP BY子句HAVING联合查询
2022-03-18 21:11:30
6008
7
原创 哈希表及底层的hash函数
哈希表文章目录哈希表概念冲突-概念冲突-避免常见的哈希函数1.直接定制法2.除留余数法冲突-避免-负载因子调节(重点掌握 )解决冲突二次探测冲突-解决-开散列/哈希桶(重点掌握)性能分析HashMpa的源码分析resize函数浅谈HashMap中的hash算法概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( ),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可
2022-03-01 13:01:30
761
原创 二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列_牛客题霸_牛客网public class Solution { public boolean func(int[] sequence,int start,int end){ if(start >= end){ return true; } int rootVal = sequence[end]; int i = start; while(i<end &a
2022-02-26 17:31:58
199
1
原创 map和set的题
文章目录MapSet只出现一次的数字复制带随机指针的链表宝石与石头坏键盘打字前k个高频单词:博哥的set&map那一节的1:20左右移除链表重复节点MapMap的官方文档注意:Map.Entry<K,V>并没有提供设置Key的方法注意:Map是一个接口,不能直接实例化对象**,如果**要实例化对象只能实例化其实现类TreeMap或者HashMapMap中存放键值对的Key是唯一的,value*是可以重复的在Map中插入键值对时,key不能为空,
2022-02-25 17:14:08
91
原创 用Map或者Set来处理链表问题
从链表中删去总和值为零的连续节点力扣 public ListNode removeZeroSumSublists(ListNode head) { ListNode dummy = new ListNode(0); dummy.next = head; Map<Integer, ListNode> map = new HashMap<>(); // 首次遍历建立 节点处链表和<->节点 哈希表
2022-02-21 17:20:55
270
原创 拼写单词~
class Solution { public boolean isInclude(String s,String chars){ for(int i = 0;i<s.length();i++){ String s1 = s.charAt(i)+""; if(!chars.contains(s1)){ return false; } int ret = ch...
2022-02-18 16:28:26
122
原创 面试题 01.02. 判定是否互为字符重排
力扣import java.util.Arrays;class Solution { //将字符串转换成字符数组,然后排序,再转换成字符串,比较两个字符串是否相等即可 public boolean CheckPermutation(String s1, String s2) { char[] arr1 = s1.toCharArray(); char[] arr2 = s2.toCharArray(); Arrays.sort(arr1); .
2022-02-18 12:20:56
208
原创 快乐数~~~(其实我一点都不快乐) && 丑数
力扣hashmap解法也可以(就是把前面的结果进行存储,然后去判断这个结果在前面是否出现过 ,如果出现过肯定就是进入了循环,此时直接判定)否则就是没出现,就是判定为快乐数这是快慢指针解法,通过快慢指针,进去·循环说明(此时没有出现1,且他们两个指针未相遇,那么我们就让快慢指针去走两步和一步,除了循环,直接去判断是否是因为出现了1才出的循环即可)class Solution { public int getnext(int n){ int sum = 0;
2022-02-17 19:23:13
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人