算法leetcode day 30
学习笔记 - 基础算法
基础算法 三分 模板题 P3382 【模板】三分法 double lmid, rmid; double const eps = 1e-6; while (r - l > eps) { lmid = (l * 2 + r) / 3; rmid = (r * 2 + l) / 3; if (F(lmid ......
leetcode 101 对称二叉树 Simple
##题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 输入:root = [1,2,2,3,4,4,3] 输出:true 输入:root = [1,2,2,null,3,null,3] 输出:false ##题解 考察二叉树的遍历, 使用广度优先 BFS 方法. BFS 的关键在于使用 ......
LeetCode 473 火柴拼正方形
LeetCode | 473.火柴拼正方形 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。 如果你能使这个正方形 ......
Day 30 30.2 非对称加密RSA
非对称加密(RSA) 非对称加密. 加密和解密的秘钥不是同一个秘钥. 这里需要两把钥匙. 一个公钥, 一个私钥. 公钥发送给客户端. 发送端用公钥对数据进行加密. 再发送给接收端, 接收端使用私钥来对数据解密. 由于私钥只存放在接受端这边. 所以即使数据被截获了. 也是无法进行解密的. 公钥和私钥 ......
Day 30 30.1 对称加密AES和DES
对称加密(AES与DES) AES是一种对称加密 所谓对称加密就是加密与解密使用的秘钥是一个。 常见的对称加密: AES DES 3DES 我们这里讨论AES。 安装: pip install pycryptodome AES 加密最常用的模式就是 ECB模式 和 CBC 模式,当然还有很多其它模式 ......
MySQL中的Join 的算法(NLJ、BNL、BKA)
本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 摘要 Join是MySQL中最常见的查询操作之一,用于从多个表中获取数据并将它们组合在一起。Join算法通常使用两种基本方法:Index Nested-Loop Join(NLJ)和Block Nested-Loo ......
学习JavaScript数据结构与算法 第四章
第四章,栈 有时候还需要一种能在添加或删除元素时进行更多控制的数据结构。有两种类似于数组的数据结构在添加和删除元素时更为可控,它们就是栈和队列。 4.2 栈数据结构 栈是一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近 ......
mosn基于延迟负载均衡算法 -- 走得更快,期待走得更稳
这篇文章主要是介绍mosn在v1.5.0中新引入的基于延迟的负载均衡算法。对分布式系统中延迟出现的原因进行剖析,介绍mosn都通过哪些方法来降低延迟,构建来与生产环境性能分布相近的测试用例来对算法进行验证 ......
Day 29 29.2 MD5摘要算法
哈希算法 - - MD5摘要算法 【一】Hash算法 哈希算法也称摘要算法、散列算法 哈希函数的输入为一段可变长度x,输出一固定长度串,该串被称为x的哈希值。 Hash函数满足以下几个基本需求: (1)输入值x为任意长度 (2)输出值长度固定 (3)单向函数,算法不可逆 (4)唯一性,很难找到两个不 ......
四种语言刷算法之环形链表 II
力扣142. 环形链表 II 1、C /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode *detectCyc ......
区域生长算法与图像分割
1. 区域生长 区域生长是一种串行区域分割的图像分割方法。区域生长是指从某个像素出发,按照一定的准则,逐步加入符合相似性判据的邻近像素,当满足生长停止条件,区域生长终止。其中相似性判据可以是像素灰度值、颜色、纹理特征等图像信息。(另一种区域生长是先将图像分割成很多的一致性较强,如区域内像素灰度值相同 ......
LeetCode 周赛 344(2023/05/07)手写递归函数的固定套路
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 大家好,我是小彭。 今天下午有力扣杯战队赛,不知道官方是不是故意调低早上周赛难度给选手们练练手。 往期周赛回顾:LeetCode 单周赛第 343 场 · 结合「下一个排列」的贪心构造问题 周赛概览 T1. ......
C语言基础算法(2)
#include <stdio.h> #include <math.h> int main(){ float a,b,c,s,area; scanf("%f%f%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { s=(a+b+c)/2; area=sqrt(s*(s-a ......
【自学笔记】贪婪算法解决时间安排问题(入门)
【自学笔记】贪婪算法解决时间安排问题(入门) 【前言】 笔者这几天在受学校Prolog作业折磨,在查找解决方案的时候发现了贪婪算法(Greedy Algorithm),大喜,遂尝试格物致知。本文会引用一道贪婪算法的经典例题,尝试让笔者这样的纯小白也能理解这种算法,走入精彩的“贪婪之门”。贪婪算法的教 ......
LeetCode 15. 三数之和
###题目链接:LeetCode 15. 三数之和 ###题意: 在给定的数组中,找出三个数(三个数不重复)使得他们相加的和为 0 ,同时答案中不能有重复的答案 ###解题思路: ####完整代码如下: //双指针做法首先要有序 // 解法一 最优解,双指针 + 排序 func threeSum(n ......
LeetCode 18. 四数之和
###题目链接:LeetCode 18. 四数之和 ###题意: 本题思路与LeetCode 15. 三数之和思路完全一样,只是多加了一层for循环 ###解题思路: ####完整代码如下: func fourSum(nums []int, target int) [][]int { // 四元组, ......
扩展欧几里得算法
扩展欧几里得算法 前置条件:需要掌握裴蜀定理和欧几里得算法 裴蜀定理: 对于不全为0的整数a, b,一定有整数x, y,使得ax + by = gcd(a, b) 欧几里得算法: gcd(a, b) == gcd(b, a % b) 假设有组特解x0, y0,使得ax0 + by0 = gcd(a, ......
LeetCode 383. 赎金信
###题目链接:LeetCode 383. 赎金信 ###题意: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 ###解题思路: 首先利用map记录magazine 中所有出现的字母,key是单个字母,valu ......
文心一言 VS chatgpt (15)-- 算法导论3.2 4~5题
四、函数 $\lceil \lg n \rceil !$ 多项式有界吗?函数 $\lceil \lg \lg n \rceil !$ 多项式有界吗? 文心一言: chatgpt: 对于第一个问题,函数 $\lceil \lg n \rceil !$ 是阶乘的形式,可以证明它是超多项式增长的,因此不是 ......
LeetCode 454. 四数相加 II
###题目链接:LeetCode 454. 四数相加 II ###题意: 给定四个数组,找出在四个数组中,各取一个数,使得四个数相加和为0 ###解题思路: 本题给出的是四个独立的数组,只要找到nums1[i] + nums2[j] + nums3[k] + nums4[l] = 0就可以,不用考虑 ......
C语言基础算法
1、计算Fibonacci数列 Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。 C语言实现的代码如下: /* Displaying Fibonacci sequence up to nth term where n is enter ......
LeetCode 516. 最长回文子序列
class Solution { public: int f[1010][1010];//f[i][j]表示s[i~j]之间的最长序列 int INF=0x3f3f3f3f; int longestPalindromeSubseq(string s) { int n=s.size(); s=' '+ ......
LeetCode 1. 两数之和
###题目链接:LeetCode 1. 两数之和 ###题意: 本题就是要找出数组中的两个数,使得它们的和等于target ###解题思路: 1、 首先暴力的做法就是两层的for循环,遍历整个nums数组,找出所有的组合,判断组合中是否有相加等于target的组合 算法复杂度为O(n^2) , ## ......
LeetCode 202. 快乐数
###题目链接:LeetCode 202. 快乐数 ###题意: 本题是让我们判断一个数是否是快乐数,题干中给出了快乐数的条件。 ###解题思路: 方法一: 在题干中指出,如果一个数不是快乐数的话,那么它的各个位上的数字的平方和会无限循环,始终变不到1, 也就是说求和的过程中,sum会重复出现,因此 ......
基于双目图像三维建模算法的测量目标物体体积计算matlab仿真
1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 双目立体视觉(Binocular StereoVision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。融合 ......
高密度城市路线规划的遗传优化算法的matlab仿真,城市点数量达到500个
1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染 ......
LeetCode 349. 两个数组的交集
###题目链接:LeetCode 349. 两个数组的交集 ###题意: 本题题意是让我们找出两个数组中的交集,注意交集中不能出现重复元素 ###解题思路: 思路比较常规,先遍历数组num1,对于每个首次出现的数字,对应位置上的数值 +1, 再遍历数组num2,判断当前数字是否在num1中出现,如果 ......
LeetCode 242. 有效的字母异位词
###题目链接:LeetCode 242. 有效的字母异位词 ###题意: 本题是要判断两个字符串 s 和 t,是否是字母异位词,所谓字母异位次就是 如果 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 ###解题思路: 首先我们很容易想到,最简单的思路就是先遍历一遍s字 ......