![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 53
早上起不来的某人
这个作者很懒,什么都没留下…
展开
-
HuffmanTree
哈夫曼树:哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n) 举个栗子(自己做了一个糙图): 该树的WPL=3...原创 2022-04-19 23:58:27 · 425 阅读 · 0 评论 -
堆排序(粗糙版)
堆:一个完全二叉树 大顶堆:一个二叉树,它的根节点上的值是整个树上最大的 小顶堆:它的根节点上的值是整个树上最小的 大致思路如下(升序排列):将一个数据视为一个二叉树,树根的角标为零,角标为n的位置的左子节点的角标为2*n+1,右子节点的角标为2*n+2。假设我们要排序数组中的前N个数,我们就将前n个树构造成一个大顶堆,然后树根(nums[0])就是最大的,将nums[0]与nums[n-1]交换,然后对前n-1个重复上述操作。直至n=0,排序完成。 代码如下: p...原创 2022-04-19 00:05:35 · 443 阅读 · 0 评论 -
每日一题--->20. 有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 示例 1: 输入:s = "()" 输出:true 示例2: 输入:s = "()[]{}" 输出:true 示例3: 输入:s = "(]" 输出:false 示例4: 输入:s = "([)]" 输出:false 示例5: 输入:s = "{[]}" 输出:true 提示: 1 &...原创 2022-04-14 19:08:04 · 360 阅读 · 0 评论 -
判断数字是否是回文数 求最大公约数
回文数: 方法一: 负数直接返回,整数直接求逆转之后的数(可能会溢出) public boolean isPalindrome(int x) { int num=x; int sum=0; while(x>0){ sum=sum*10+num%10; num/=10; } return x==sum; } 方法二: 求逆转一半的数,然后和未...原创 2022-04-13 23:31:56 · 319 阅读 · 0 评论 -
每日一题--->18、四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 <= a, b, c, d< n a、b、c 和 d 互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target 你可以按 任意顺序 返回答案 。 示例 1: 输入:nums = [1,0,.原创 2022-04-13 22:25:39 · 174 阅读 · 0 评论 -
每日一练--->剑指 Offer 14- I. 剪绳子
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18 解法一:动态规划 首先设置最大积为f(n),意为长度为n的绳子可以截取的各段长度的最大积。 假如我们想要获取长度为n(n&g...原创 2022-03-28 21:12:12 · 277 阅读 · 0 评论 -
每日一练--->62、不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 方法一: 思路:因为只能向下或者向右,所以坐标为[i,j]的位置可以从[i-1,j]或者[i,j-1]位置而来,所以假设到[i,j]的方式有f[i,j]种,通过分析我们 可以得出递推式: f[i,0]=1 f[0][j]=1 ...原创 2022-03-26 21:02:05 · 82 阅读 · 0 评论 -
每日一练--->11.乘最多的水(双指针)
给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。 找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 。 输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。 思路: ...原创 2022-03-26 00:20:58 · 89 阅读 · 0 评论 -
每日一练--->7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 解法1: 将数组部分反转,然后利用StringBuffer的reverse()方法将字符串进行反转,然后比较反转后的字符串于Integer.MAX_V...原创 2022-03-24 00:02:53 · 276 阅读 · 0 评论 -
每日一练--->53、最大连续数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组[4,-1,2,1] 的和最大,为6 解法1---来自我一聪明的同学: 具体思路: 假设我们已经计算出某一部分的和为sum,如果sum>0,说明该部分会对临近的部分有帮助,如果sum<=0,则说明该部分对临近的部分的和没有...原创 2022-03-22 18:05:12 · 404 阅读 · 0 评论 -
每日一练---> 45、跳跃游戏
45、跳跃游戏 给你一个非负整数数组nums ,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 假设你总是可以到达数组的最后一个位置。 示例 1: 输入: nums = [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。 示例 2: 输入: nums = [2,3,0,1...原创 2022-03-21 23:43:00 · 84 阅读 · 0 评论 -
每日一练--->22、括号生成
一、回溯 1、括号生成 (题目内容直接复制LeetCode) 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 提示: 1 <= n <= 8 刚开始看到这道题感觉不是很有头绪,不知道把所有的情况都给搞出来,而且不知道搞出来后又是怎么将这种所有的情况以.原创 2022-03-20 15:32:51 · 281 阅读 · 0 评论 -
八皇后问题
package Recursion; import java.util.Arrays; //解决八皇后问题 public class Queen { //用一维数组记录皇后的位置 arrQueen[i]=j 位置为[i][j] int arrQueen[]=new int[8]; int sum=0; public Queen(){ Arrays.fill(arrQueen,-1); } public static void mai.原创 2022-01-16 19:08:25 · 3364 阅读 · 0 评论 -
有关前缀、中缀、后缀表达式的计算
1、前缀表达式 (1)、又称逆波兰表达式,运算符在符号前面的表达式 (2)、计算方法: 从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈项的两个 数,用运算符对它们做相应的计算(栈项元素和次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。 (3)、代码实现 package MyStack; //本程序旨在计算前序表达式的结果 /* 前缀表达式的计算机求值 (3+4)*5-6 从右...原创 2022-01-15 10:19:19 · 746 阅读 · 0 评论 -
89.格雷编码
n 位格雷码序列 是一个由 2n 个整数组成的序列,其中: 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1) 第一个整数是 0 一个整数在序列中出现 不超过一次 每对 相邻 整数的二进制表示 恰好一位不同 ,且 第一个 和 最后一个 整数的二进制表示 恰好一位不同 给你一个整数 n ,返回任一有效的 n 位格雷码序列 。 示例 1: 输入:n = 2 输出:[0,1,3,2] 解释: [0,1,3,2] 的二进制表示是 [00,01,11,10] 。 - 00 和 01 有一原创 2022-01-09 11:23:34 · 179 阅读 · 0 评论 -
将整形数组的零移动到数组的最后,但是不改变其他数的相对位置
具体题目如下: 我的思路:找到数组中第一个不为零的数组,然后将他移动至他的前一位数组不为零或者直接移动到角标为零的位置。(垃圾) 我的代码: classSolution{ publicvoidmoveZeroes(int[]nums){ if(nums.length==0||nums.length==1){ //此处考虑到数组大小为1或者为0都不需要移动 return; } ...原创 2021-12-23 21:54:51 · 457 阅读 · 1 评论 -
c++--->sort函数关于结构体的排序
#include <iostream> #include <algorithm> #include <iomanip> using namespace std; struct MyStruct { int sum; int chin; }ff[100]; bool cmp(const MyStruct& a, const MyStruct& b) { if (a.sum > b.sum) return 1; else if (a.sum.原创 2021-08-18 14:37:03 · 876 阅读 · 0 评论 -
完全背包问题(洛谷)
一个背包,有最大容量,然后几种物品,每种物品有各自的体积以及价值,然后每种物品是无限多的,然后以某一容量可以拿到的物品的最大价值。 在一定的范围内可以使用跟01背包一样的解法--->打表(二位数组)。 #include <iostream> #include <algorithm> #include <iomanip> using namespace std; int t[1001], v[1001] ; int arr[100][1...原创 2021-08-12 12:41:07 · 442 阅读 · 0 评论 -
洛谷P1062--任意次幂的和的排序,求第N个数
给定一个正整数k(3≤k≤15)k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3k=3时,这个序列是: 1,3,4,9,10,12,13,…1,3,4,9,10,12,13,… (该序列实际上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2,…30,31,30+31,32,30+32,31+32,30+31+32,…) 请你求出这个序列的第NN项的值(用1010进制数表示)。 例如,对于k=3k原创 2021-08-11 12:01:53 · 220 阅读 · 0 评论 -
c++ 有关高精度的算法
C++可真神奇 高精度算法:加减乘除 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于Nu原创 2021-07-21 16:29:12 · 479 阅读 · 0 评论