![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 69
哼律
永远都是个小白
展开
-
算法题小记
文章目录一、TOPK问题一、TOPK问题技巧,中等题就用优先队列,难题就用二分法优先队列:class Solution { public int[] topKFrequent(int[] nums, int k) { int[] result = new int[k]; HashMap<Integer, Integer> map = new HashMap<>(); for (int num : nums原创 2022-05-18 20:33:31 · 650 阅读 · 0 评论 -
Java求解N皇后问题
设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。示例:输入:4输出:[[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…Q.”,“Q…”,“…Q”,“.Q…”]]解释: 4 皇后问题存在如下两个不同的解法。[[“.Q…”, // 解法 1“…Q”,“Q…”,“…Q.”],[“…Q.”, // 解法 2“Q…”,“…Q”,“.Q…”]]cl原创 2022-05-04 09:57:19 · 885 阅读 · 0 评论 -
回溯组合排列总结
文章目录一、组合一、组合1、组合总数①给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。本题没有数量要求,可以无限重复,但是有总和的限制,所以间接的也是有个数的限制。回溯方法public void backtrace(int[] candidates, in原创 2022-04-15 17:20:30 · 104 阅读 · 0 评论 -
回溯算法理论基础
文章目录一、回朔法的本质二、回朔法能解决的问题三、回溯法的模板一、回朔法的本质回溯是递归的副产品,只要有递归就会有回溯。回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。那么既然回溯法并不高效为什么还要用它呢?因为没得选,一些问题能暴力搜出来就不错了,撑死了再剪枝一下,还没有更高效的解法深入理解回溯回溯法解决的问题都可以抽象为树形结构,是的,我指的是所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集原创 2022-04-14 19:48:22 · 271 阅读 · 0 评论 -
二叉树的算法
文章目录1、判断二叉树是否对称1、判断二叉树是否对称LeetCode链接给你一个二叉树的根节点 root , 检查它是否轴对称。这题的重点在于怎么判断?我们判断的是两颗子树,即两个子树的外侧和外侧是否相等,里侧和里侧是否相等public boolean judge(TreeNode left, TreeNode right){ if(left==null&&right==null){ return true;原创 2022-04-11 13:20:19 · 556 阅读 · 0 评论 -
二叉树遍历
文章目录一、二叉树的前序遍历1、递归遍历2、非递归遍历二、二叉树的中序遍历1、递归遍历2、非递归遍历三、二叉树的后序遍历1、递归遍历2、非递归遍历四、二叉树的层序遍历一、二叉树的前序遍历1、递归遍历递归遍历的三个要素确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统原创 2022-04-08 09:51:46 · 692 阅读 · 0 评论 -
回朔法里的去重问题
回溯算法里的去重问题分析原创 2021-12-21 11:48:29 · 137 阅读 · 0 评论 -
求两个数的最大公约数
所谓求整数 a、b 的最大公约数,就是求同时满足 a%c=0、b%c=0 的最大正整数 c,即求能够同时整除 a 和 b 的最大正整数 c。在介绍欧几里得算法之前,读者可能会有这样的思路:若 a、b 均不为 0,则依次遍历不大于 a(或 b)的所有正整数,依次试验它是否同时满足两式,并在所有满足两式的正整数中挑选最大的那个即是所求;若 a、b 其中有一个为 0,那么最大公约数即为 a、b...翻译 2019-03-02 17:08:55 · 322 阅读 · 0 评论 -
【指针与引用作为形参】在二叉树创建中的应用
本文旨在通过二叉树的递归创建,分析指针与引用,函数形参与实参的具体实现。二叉树的遍历,通常是利用创建好的二叉链表的首地址,也即根节点地址。主函数先定义一指针,再通过二叉树创建函数返回根结点地址,或者将定义的指针作为形参来实现修改。这就涉及函数形参与实参的调用机制。实参赋给形参过程是复制的过程,而被调函数结束时,内部所有变量所分配的内存会被释放掉。这便是无法直接在同一层上通过形参去改变形参。c...原创 2019-03-05 16:00:52 · 409 阅读 · 1 评论 -
priority_queue优先队列 按照由小到大顺序
C++优先队列的基本使用方法在优先队列中,优先级高的元素先出队列。标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。优先队列的第一种用法,也是最常用的用法:priority_queue<int> qi;通过<操作符可知在整数中元素大的优先级高。故示例1中输出结果为:9 6 5 3 2第二种方法:在示例1中,如果我们要把元素从小到大输出怎么办呢?这...翻译 2019-03-05 14:04:39 · 3420 阅读 · 0 评论