04 2022 档案

摘要:1.KMP算法解决的问题:两个字符串str1,str2,判断str2是否为str1的字串 * 注:abc是abcde的字串,但abd不是 2.KMP算法过程 (1).先求字符串前缀和后缀都相等的最大长度(该长度一定小于字符串本身的长度) * 例:一个字符串abbab,则其前后缀分别为: * 长度:1 阅读全文
posted @ 2022-04-30 17:17 jue1e0 阅读(42) 评论(0) 推荐(0) 编辑
摘要:并查集的实现代码及解析: 1 public class UnionFind { 2 public static class Element<V> { 3 public V value; 4 5 public Element(V value) { 6 this.value = value; 7 } 8 阅读全文
posted @ 2022-04-30 17:16 jue1e0 阅读(19) 评论(0) 推荐(0) 编辑
摘要:哈希表的几个特殊应用实现: 1.* 设计一个数据结构,使得该结构再插入,删除和随机获取结构中的数据的时间复杂度均为O(1) 1 public class RandomPools { 2 public static class Pool<K> { 3 HashMap<K,Integer> keyInd 阅读全文
posted @ 2022-04-29 09:53 jue1e0 阅读(38) 评论(0) 推荐(0) 编辑
摘要:哈希函数 * 1.特征: * (1).其自变量的范围是无穷大的,但因变量的范围是有限且确定的 * (2).在自变量相同情况下,哈希函数得到的因变量值一定相同 * (3).不同的自变量可能会得到相同的因变量值,但针对一个成熟的哈希函数,其发生的概率极低 * (4).离散性:相似的自变量通过哈希函数算出 阅读全文
posted @ 2022-04-29 09:42 jue1e0 阅读(189) 评论(0) 推荐(0) 编辑
摘要:1. * 将一个字符串转换为字母的形式,转换规则如下: * 对一个字符串:123,可以将其看成三个部分转为1--A,2--B,3--C,也可转为12--L,3--C * 即既可以转为ABC,也可以转为LC * * 现求该字符串有多少种转换形式 代码及解析: 1 //该函数表示str在0——i - 1 阅读全文
posted @ 2022-04-28 15:53 jue1e0 阅读(18) 评论(0) 推荐(0) 编辑
摘要:暴力递归的思路: 利用递归的(深度优先)搜索功能,去枚举一个问题的所有可能情况(或步骤),从而寻求最优解(总答案) 1.汉诺塔问题 * 将问题分为三个步骤,使用递归的方式进行实现。 * 定义一个函数f(from,to,other),from表示圆盘移动的起始杆,to表示圆盘移动的终点杆,other为 阅读全文
posted @ 2022-04-24 22:05 jue1e0 阅读(38) 评论(0) 推荐(0) 编辑
摘要:解决的问题: 线程1和线程2交替打印1——100中的数字 涉及到的三个方法:wait():执行该方法,当前线程进入阻塞状态,并释放同步监视器notify():执行该方法,就会唤醒被wait的一个线程,如果有多个被wait,则唤醒优先级最高的那个线程notifyAll():执行该方法,就会唤醒所有被w 阅读全文
posted @ 2022-04-24 21:06 jue1e0 阅读(21) 评论(0) 推荐(0) 编辑
摘要:在单例模式的懒汉式中会出现线程不安全的情况,可使用以下两种方法解决: 方法一:同步函数: 代码: 1 private static Bank instance = null; 2 3 public static synchronized Bank getInstance() {//解决线程不安全问题 阅读全文
posted @ 2022-04-22 20:47 jue1e0 阅读(515) 评论(0) 推荐(0) 编辑
摘要:一.线程的安全问题: 1.问题:卖票过程中出现重票和错票问题(线程不安全问题)2.出现原因:当某个线程的操作尚未完成时,其他线程的操作就参与进来。(即多个线程同时共用一块数据)3.解决措施:当一个线程在操作共享数据时,其他线程不能参与进来(直到原线程操作完其他线程才可以参与进来) 该情况即使在原线程 阅读全文
posted @ 2022-04-21 21:00 jue1e0 阅读(24) 评论(0) 推荐(0) 编辑
摘要:n皇后问题: * 给定一个n*n的棋盘,向该棋盘中放入n个皇后,使得n个皇后之间不在同行同列或同斜线,问有多少种方法 * * 解题思路: * 采用深度优先搜索的思想: * 1.整体上通过按行的思想,从第0行到第n-1行逐层深入进行递归。 * 2.每次递归时要记录之前所有已经放好的皇后的位置,用于接下 阅读全文
posted @ 2022-04-21 19:15 jue1e0 阅读(34) 评论(0) 推荐(0) 编辑
摘要:贪心算法:从一个局部方向进行考虑,通过局部最优即可达到所要的整体最优,该方法就称作贪心算法 贪心算法的几道常见例题:1.会议问题:已知一系列会议的起始时间和结束时间,在一段时间内合理安排会议,使这段时间可以尽可能多的会议 * 采用贪心算法策略: * 即每次都选择大于当前时间内结束时间最早的那个会议 阅读全文
posted @ 2022-04-20 10:14 jue1e0 阅读(131) 评论(0) 推荐(0) 编辑
摘要:一.Thread类的常用方法: 1.start():启动当前线程并调用线程的run()方法2.run():将创建线程要执行的操作声明在此3.currentThread():静态方法,放回当前代码执行的线程4.getName():获取当前线程的名字5.setName():设置当前线程的名字6.yiel 阅读全文
posted @ 2022-04-19 23:53 jue1e0 阅读(885) 评论(0) 推荐(0) 编辑
摘要:前缀树:将一个字符串进行拆解,从根节点到叶节点来进行深度延伸,每次延伸都记录一个字符,其最大特点就是可以用来判断字符前缀的问题。 原理图: p为经过这个点的字符串树,e为以这个点为结尾的字符串树 代码及解析:1.基本类的构建: 1 public static class TrieNode{ 2 in 阅读全文
posted @ 2022-04-19 22:43 jue1e0 阅读(34) 评论(0) 推荐(0) 编辑
摘要:1.Dijkstra算法:可以获得以一个点为起点到所有其他点的最短路径的问题 * 思路: * 从起点开始,遍历所有以起点为一端的所有边,通过这些边来更新其到其他点的距离,如果更新后更小则对该点最小 * 距离进行替换。一个点更新完后,去遍历整个点集,找到离起点距离最小的点,在重复以上步骤即可。 代码及 阅读全文
posted @ 2022-04-18 17:07 jue1e0 阅读(26) 评论(0) 推荐(0) 编辑
摘要:最小生成树: * 在整个图连通的情况下,保证所有边的权值之和最小,找出这个图 1.Kruskal算法: * Kruskal算法思路: * 将边从小到大进行排列,然后在加入边时,看边的两个端点是否已经连通,若连通,则不加这条边,直接检查下一条边 * 若不连通,则加上这条边,并把边上的点设为连通的状态. 阅读全文
posted @ 2022-04-17 20:59 jue1e0 阅读(18) 评论(0) 推荐(0) 编辑
摘要:并查集:主要用来判断两个数据是否在同一组,并能对两个不同的树进行合并成一组的一种数据结构 其实现的核心方式就是:两个在同一组的节点有着相同的祖先节点。 代码实现及解析: 1 public class UnionFind { 2 public int[] fa;//用来存储每个节点的祖先(相同组的成员 阅读全文
posted @ 2022-04-17 19:52 jue1e0 阅读(37) 评论(0) 推荐(0) 编辑
摘要:拓扑排序 * 将所有入度为0的点入队,并将这个点去除后对其他点更新,再找所有入度为0的点入队 * 按照以上操作,得到的队列即为一个拓扑排序结构 代码及解析: 1 public static List<Node> tpSort(Graph graph) { 2 Queue<Node> zeroQue 阅读全文
posted @ 2022-04-16 16:47 jue1e0 阅读(32) 评论(0) 推荐(0) 编辑
摘要:1.宽度优先遍历: 1 /* 2 * 图中关于点的宽度优先遍历(使用队列来进行实现) 3 * 从一个点出发宽度优先遍历所有的点 4 */ 5 6 public static void NodeBfs(Node node) { 7 if (node == null) { 8 return; 9 } 1 阅读全文
posted @ 2022-04-16 15:54 jue1e0 阅读(25) 评论(0) 推荐(0) 编辑
摘要:图有许多的存储和定义形式,这就导致图的每种算法针对不同的图的数据结构有不同的代码形式,所以为了便于解题,我们一般熟练一种图的数据结构所对应的算法, 然后解决问题时,只需要把题中所给的图转化为自己平常所使用的图,在套用自己的算法模板解题即可。 之后所有的图的算法都是针对该数据结构类型来对算法进行编码描 阅读全文
posted @ 2022-04-16 15:53 jue1e0 阅读(63) 评论(0) 推荐(0) 编辑
摘要:题目描述:将一张纸连续对折n次,从上到下依次打印折痕的类型(分为凹凸两个类型) 解析: * 对于第1次对折会在中间出现一个凹折痕迹 * 对于之后次数的对折,会在上一次折合的上方出现一个凹折痕,下方出现一个凸折痕 * * 所以可以把该模型转换为二叉树: * 在每棵树的左子树加上凹折痕,右子树加上凸折痕 阅读全文
posted @ 2022-04-15 20:40 jue1e0 阅读(142) 评论(0) 推荐(0) 编辑
摘要:题目描述: 二叉树的序列化:将二叉树转化为一个字符串,可以用前中后序任何一种遍历进行.普通节点用val值表示,空节点用#表示,不同节点直接用_隔开 代码: 1 //将二叉树转为字符串 2 public static String serialBypre(Node root) { 3 if (root 阅读全文
posted @ 2022-04-15 20:38 jue1e0 阅读(61) 评论(0) 推荐(0) 编辑
摘要:题目: 求二叉树的序列化下一个节点(即二叉树中序遍历的下一个节点) * 如果可以快速找出一个节点的父节点,则可以采用比中序遍历法更简便的方法进行求解 * 思路: * 1.先看这个节点有没有右子树,如果有右子树,则返回右子树的最左节点 * 2.如果没有右子树,就向上找它的父节点,直到找到一个父节点它是 阅读全文
posted @ 2022-04-14 23:23 jue1e0 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目链接:剑指 Offer 68 - II. 二叉树的最近公共祖先 - 力扣(LeetCode) (leetcode-cn.com) 方法1(易理解,代码量大): 1 //方法1:用一个HashMap存入所有节点对应的父节点(建立映射关系),然后去遍历其中一个节点的所有父节点即 2 //(包括父节点 阅读全文
posted @ 2022-04-14 22:56 jue1e0 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目链接:剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣(LeetCode) (leetcode-cn.com) 注意点:巧妙运用队列的size值来实现按层次遍历 代码及解析: 1 public List<List<Integer>> levelOrder(TreeNode 阅读全文
posted @ 2022-04-14 21:36 jue1e0 阅读(22) 评论(0) 推荐(0) 编辑
摘要:* 二叉树的递归套路总结(递归的最核心思想:通过递归,可以把任何问题都简化为根节点,左儿子,右儿子的问题 * 即:把左右子树通过递归给归一化为左右儿子节点(把整棵树看作一个整体)) * 1.进行递归,分别从根节点向左子树和右子树进行递归(对任何问题通用) * 2.分析题目所要求的条件,去根据题目要求 阅读全文
posted @ 2022-04-13 22:39 jue1e0 阅读(115) 评论(0) 推荐(0) 编辑
摘要:完全二叉树概念:一颗近似满的二叉树,一定要保证前个结点的左右儿子都满的情况下,才可以继续向下层递伸 判断一颗树是否为完全二叉树: 1.先判断它是否存在节点,该节点的左儿子为空,而右儿子不为空,如果存在则返回false 2.在没有1的情况下,如果发现第一个左右儿子不全的节点(双空或是左不空右空),则后 阅读全文
posted @ 2022-04-13 19:47 jue1e0 阅读(311) 评论(0) 推荐(0) 编辑
摘要:题目链接: 剑指 Offer 28. 对称的二叉树 思路:本题采用递归的方式来进行解决,一个树要满足对称,则说明左结点的左节点和右节点的右节点,以及左节点的右节点和右节点的左节点要相等 所以按照这个思路去往下递归,并讨论好空节点的情况。递归的终点:找到不符合条件的情况或是两个结点相等且都为null, 阅读全文
posted @ 2022-04-12 19:48 jue1e0 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目链接:二叉搜索树的第k大节点 | 图解DFS | 最通俗易懂的题解 【c++/java版本】 - 二叉搜索树的第k大节点 - 力扣(LeetCode) (leetcode-cn.com) 二叉搜索树的概念: 左子树的所有结点小于头节点,头节点小于右子树的所有结点(对所有子树都有以下规律) 所以本 阅读全文
posted @ 2022-04-12 18:43 jue1e0 阅读(87) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历: 一、递归式遍历: 1.树的递归式遍历的顺序: 分析:从中我们可以看出每个节点都会被遍历到三遍 2.代码实现(包括树的结构): 1 /* 2 * 树的基本结构定义 3 */ 4 class Node { 5 int val; 6 Node left; 7 Node right; 8 } 阅读全文
posted @ 2022-04-10 21:07 jue1e0 阅读(143) 评论(0) 推荐(0) 编辑
摘要:题目描述: 判断两个链表(可能有环可能无环)之间是否有相交(此处相交指链表经过了同一个地址的节点(与节点的值无关)) 。如果相交,则返回相交的第一个节点。否则,返回null 前置知识点:判断链表是否有环,并找出第一个成环节点: 法1:使用HashSet的方法来判断是否经过了重复节点 代码及解析: 1 阅读全文
posted @ 2022-04-10 16:16 jue1e0 阅读(378) 评论(0) 推荐(0) 编辑
摘要:题目链接: 剑指 Offer 35. 复杂链表的复制 - 力扣(LeetCode) (leetcode-cn.com) 1.法一:使用HashMap,利用其映射关系来进行实现(多占一个哈希表的空间) 1 public Node copyRandomList1(Node head) { 2 HashM 阅读全文
posted @ 2022-04-09 20:40 jue1e0 阅读(13) 评论(0) 推荐(0) 编辑
摘要:弹窗窗口的建立: 1 //弹窗的窗口 2 class MyDialogDemo extends JDialog{ 3 public MyDialogDemo() { 4 this.setVisible(true); 5 this.setBounds(100,100,500,500); 6 this. 阅读全文
posted @ 2022-04-09 19:24 jue1e0 阅读(213) 评论(0) 推荐(0) 编辑
摘要:1.JFrame(会自动携带关闭监听器): 1 public static void init() { 2 JFrame frame = new JFrame("JFrame窗口"); 3 frame.setVisible(true); 4 frame.setBounds(100,100,200,2 阅读全文
posted @ 2022-04-09 19:21 jue1e0 阅读(188) 评论(0) 推荐(0) 编辑
摘要:1.键盘监听器: 1 class KeyFrame extends Frame { 2 public KeyFrame() { 3 setBounds(1,2,300,400); 4 setVisible(true); 5 6 this.addKeyListener(new KeyAdapter() 阅读全文
posted @ 2022-04-09 19:13 jue1e0 阅读(790) 评论(0) 推荐(0) 编辑
摘要:文本框的使用: 1 public TextField num1,num2,num3; 2 num1 = new TextField(10);//表示最多可输入10字节 3 num2 = new TextField(10); 4 num3 = new TextField(20); 1 public c 阅读全文
posted @ 2022-04-09 19:04 jue1e0 阅读(147) 评论(0) 推荐(0) 编辑
摘要:题目: 根据值val将链表划分为小于val的左半区,等于val的中间半区,大于val的右半区 方法1:将其转为node数组,用数组的思想将其实现(需额外空间,且实现还更复杂) 代码解析: 1 public static void PartitionList1(MyLink list,int val) 阅读全文
posted @ 2022-04-09 16:34 jue1e0 阅读(80) 评论(0) 推荐(0) 编辑
摘要:监听器作为一个类型,可以附加在按钮等组件上,使这些组件可以与用户进行交互: 监听器的两种使用方式: 以下两种方式都可以使用户在与窗口做关闭交互的时候可以正常的关闭窗口 1.通过自己定义创建一个监听器,并按照自己的需求进行编写实现: 1 //因为addActionListener需要ActionLis 阅读全文
posted @ 2022-04-08 22:14 jue1e0 阅读(980) 评论(0) 推荐(0) 编辑
摘要:前置知识点: 栈的使用: 1 import java.util.Stack; //引用栈 2 //初始化 3 Stack<Integer> stack = new Stack<Integer>(); 4 //进栈 5 stack.push(Element); 6 //出栈 7 stack.pop() 阅读全文
posted @ 2022-04-08 20:34 jue1e0 阅读(46) 评论(0) 推荐(0) 编辑
摘要:链接:剑指 Offer 25. 合并两个排序的链表 - 力扣(LeetCode) (leetcode-cn.com) 本题中要注意解决两个问题: 1.要合并的两个链表l1,l2可能为空,所以要对这两个链表为空的情况进行三种类型讨论:(1).都为空 (2).1空,2不空 (3).1不空,2空 2.一开 阅读全文
posted @ 2022-04-08 11:50 jue1e0 阅读(31) 评论(0) 推荐(0) 编辑
摘要:1.链表的构建:定义好头节点,并不断向链表的尾部加入节点 (1).建立一个头节点,并定义好节点的含义: 1 /* 2 * 链表的基本定义:头节点 + 接下来的各节点 3 * 各节点因为要指向下一个结点,所以包含两个元素,即本身的值和指向下一个结点的指针 4 */ 5 Node head = null 阅读全文
posted @ 2022-04-08 10:57 jue1e0 阅读(315) 评论(0) 推荐(0) 编辑
摘要:有关Map/HashMap的常用函数: (1).添加,删除,修改操作: 1 public static void MapTest1() 2 { 3 Map map = new HashMap(); 4 map.put("a", 1);//插入键值对元素(Entry):a=1 5 map.put("c 阅读全文
posted @ 2022-04-07 21:51 jue1e0 阅读(20) 评论(0) 推荐(0) 编辑
摘要:排序的稳定性:只两个相同的值,在排完序后依然保持其排序前的先后顺序。 1.基于比较的排序的时空复杂度和稳定性: 此类排序着重分析其在交换的时候是否会破坏其排序的稳定性(一般来说存在大范围的交换的排序算法就会破坏其稳定性) 总结: 2.不基于比较的排序 对于计数排序和基数排序这两种排序,其时间复杂度都 阅读全文
posted @ 2022-04-07 19:07 jue1e0 阅读(61) 评论(0) 推荐(0) 编辑
摘要:1.在类中添加一个专属类的比较器: 假设已有一个类Student,且有一个int型数据id,按照id的升序构造一个比较器: public static class IdAscComparator implements Comparator<Student> { /* * 如果返回的值为负数,则第一个 阅读全文
posted @ 2022-04-07 16:31 jue1e0 阅读(187) 评论(0) 推荐(0) 编辑
摘要:设计以下布局: 代码实例: 1 public static void main(String[] args) 2 { 3 //整体上采用逐步细分的思想来完成,先把几个有规律的看作一个整体,再把整体再继续往下逐渐划分 4 5 Frame frame = new Frame("test"); 6 fra 阅读全文
posted @ 2022-04-07 10:16 jue1e0 阅读(110) 评论(0) 推荐(0) 编辑
摘要:1.行列式布局(GridLayout):(即按给定的行和列来进行布局) 1 public static void main(String[] args) 2 { 3 Frame frame = new Frame("TestGridLayout"); 4 5 Button btn1 = new Bu 阅读全文
posted @ 2022-04-07 10:14 jue1e0 阅读(171) 评论(0) 推荐(0) 编辑
摘要:Panel是放在窗口(Frame)上的一个子界面,它也是做一个页面设计的作用,无法进行交互 1 //布局的定义 2 Panel panel = new Panel(); 3 //panel设置坐标,相较于frame 4 panel.setBounds(50,50,400,400); 5 panel. 阅读全文
posted @ 2022-04-07 10:07 jue1e0 阅读(181) 评论(0) 推荐(0) 编辑
摘要:Frame就是一个窗口: Frame的创建的形式及设定: 1 public static void CreateFrame() 2 { 3 4 Frame frame = new Frame("我的第一个java图形界面窗口"); 5 //设置可见性 6 frame.setVisible(true) 阅读全文
posted @ 2022-04-07 10:05 jue1e0 阅读(123) 评论(0) 推荐(0) 编辑
摘要:桶排序的基本思想: * 之前所涉及到的简单排序及复杂排序中的归并排序,快速排序和堆排序都属于基于比较的排序 * 而桶排序则是一个不基于比较的排序 * * 桶排序这类不基于比较的排序的适用范围较为有限 * 其核心思想是把有着相同特点的某些元素装入一个桶,桶与桶之间是有序的,桶的内部也是有序的 * 最终 阅读全文
posted @ 2022-04-06 19:59 jue1e0 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题目: 已知在一批数组中,两个值出现了奇数次,其他值都出现了偶数次,快速找出出现奇数次的两个数 代码及注释解析: 1 public static void FindTwoOddTimes(int[] arr) 2 { 3 int ans1 = 0,ans2 = 0; 4 int eor = 0; 5 阅读全文
posted @ 2022-04-06 10:50 jue1e0 阅读(118) 评论(0) 推荐(0) 编辑
摘要:1.堆排序的基本思想: *用堆排序实现升序 * 其主要用到了大根堆的思想(先理解大根堆的思想,再进行堆排序) * * 因为大根堆可以快速找到最大数,所以只要每次都把这个最大数和最后一个数交换,那么依次进行: * 就可以使得最大数被换到最后一个,倒二大的数换到倒二个,直到heapSize缩到0为止,则 阅读全文
posted @ 2022-04-05 22:28 jue1e0 阅读(35) 评论(0) 推荐(0) 编辑
摘要:1.先明确堆的概念: * 堆的定义详解: * 堆即为一个满二叉树,或是一个顺序完全二叉树(即如果没有满二叉树,则有且仅有一个父结点只有左儿子,没有右儿子 * 且这个结点一定是在倒数第二层的最右边) * * 堆在内存中的实际结构就是数组,只不过给它的下标赋予了一些额外的含义 * 在数组中,若一个结点下 阅读全文
posted @ 2022-04-05 22:05 jue1e0 阅读(140) 评论(0) 推荐(0) 编辑
摘要:归并排序利用递归思想将一个数组逐渐进行二分,直到二分到只有一个元素。 再倒着回来将其进行合并,在合并的过程中保证其合并完的结果有序(合并的两部分始终都是部分有序的),一直合并到成为一个完整的数组 图示: 代码及其解析: 1 public static void MergeSort(int[] arr 阅读全文
posted @ 2022-04-05 16:22 jue1e0 阅读(18) 评论(0) 推荐(0) 编辑
摘要:快速排序就是对荷兰国旗问题的一个递归式应用: 即每次随机取出一个数(在这个数组中等概率随机选一个位置,取出一个数),然后把所有小于这个数的一些值放在左边,等于这个数的一些值放在中间,再把大于这个数的一些值放在右边 在递归的对左边和右边的这批数进行做如上的操作,直到递归到只有一个数为止。 代码及解析: 阅读全文
posted @ 2022-04-05 16:08 jue1e0 阅读(26) 评论(0) 推荐(0) 编辑
摘要:荷兰国旗: 给定一个数组arr和一个数num,将其分为三个区域:左侧为<num的区域,中间为=num的区域,右侧为等于num的区域 代码及解析: 1 //给定一个数组arr和一个数num,把小于num的数放在左边,等于num的数放中间,大于num的数放在右边 2 public static void 阅读全文
posted @ 2022-04-05 15:07 jue1e0 阅读(59) 评论(0) 推荐(0) 编辑
摘要:链接:https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5 本题采用归并排序的思想对问题进行求解,即在每次递归归并中,对递归出的子问题考虑能组成逆序对的个数,来以此累加。 解题代码: 1 static int mod = 阅读全文
posted @ 2022-04-04 20:26 jue1e0 阅读(36) 评论(0) 推荐(0) 编辑
摘要:前提:如果一个问题可以拆分为多个等规模的子问题进行递归求解 则其时间复杂度满足master公式: T(n) = a * T(n/b) + O(n^d); 其中T(n)表示问题规模为n的母问题的时间复杂度 T(n/b)表示问题规模拆分为n/b的子问题的时间复杂度 a表示子问题在每次递归时的执行的次数( 阅读全文
posted @ 2022-04-04 20:22 jue1e0 阅读(182) 评论(0) 推荐(0) 编辑
摘要:278. 第一个错误的版本 - 力扣(LeetCode) (leetcode-cn.com) 本题和寻找峰值类似,只不过要多注意一个begin+last的越界问题 从中也可以看出,此种二分查找的方法,可以用于查数组种第一个出现num的值(即num如果在数组中出现很多次,可以用该二分的写法,找到第一次 阅读全文
posted @ 2022-04-04 14:47 jue1e0 阅读(18) 评论(0) 推荐(0) 编辑
摘要:前置知识点补充: 二分查找的非递归模板: 1 //有序数组中查找某个数 2 public static Boolean BinarySearch(int[] arr,int num) 3 { 4 int begin = 0, last = arr.length - 1; 5 while (begin 阅读全文
posted @ 2022-04-04 14:29 jue1e0 阅读(32) 评论(0) 推荐(0) 编辑
摘要:1.异或运算的基本性质: 两个数的异或可以看做两个数进行不进位的加法(1).0^n = n, n ^ n = 0, 1^n = ~n (2).满足交换律:a^b = b^a 满足结合律:(a^b)^c = a^(b^c) (3).从(2)中可以推出,只要是同一批数进行异或,那么任意调换异或顺序,不改 阅读全文
posted @ 2022-04-03 21:58 jue1e0 阅读(1173) 评论(0) 推荐(0) 编辑
摘要:1.普通公用表达式: 1 #CTE配合使用实现子查询 2 WITH cte_emp 3 AS (SELECT DISTINCT department_id FROM employees) 4 #此处cte_emp就可以表示子查询中()里面的表 5 6 SELECT * 7 FROM departme 阅读全文
posted @ 2022-04-02 14:16 jue1e0 阅读(59) 评论(0) 推荐(0) 编辑
摘要:1.窗口函数解析:其相较于聚合函数的区别就是,聚合函数是按照某个特性,如对一类元组进行求和,将求和的结果变成一项进行呈现,即是多变一的过程。 而窗口函数则是在得到这个求和结果后,把这个结果赋给这一类元组的所有元组中去,即仍保留了多个元组的情况 使用实例: 1 #任务:算出每个区域的销售额占自己所在的 阅读全文
posted @ 2022-04-02 14:12 jue1e0 阅读(258) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示