代码随想录算法训练营:26/60

JSAPI微信支付(小程序)V3版本JAVA代码实战源码 1.1、商户通过JSAPI/小程序下单接口获取到发起支付的必要参数prepay_id后,再通过微信小程序调起微信支付收银台JSAPI/小程序下单_JSAPI支付|微信支付商户文档中心1.3、微信H5发起类似,结合文档,细微调整,前端返回类似,参考文档修改为微信内置浏览器调起支付即可。 阅读详情

非科班学习算法day26 | LeetCode491:非递减子序列 ,Leetcode46:全排列 ,Leetcode47:全排列|| 


介绍

包含LC的两道题目,还有相应概念的补充。

相关图解和更多版本:

代码随想录 (programmercarl.com)https://programmercarl.com/#%E6%9C%AC%E7%AB%99%E8%83%8C%E6%99%AF


一、LeetCode题目

1.LeetCode491:非递减子序列 

题目链接:491. 非递减子序列 - 力扣(LeetCode)

题目解析

       和前面问题(子集||)最大的区别在于这里不能够排序,所以去重采用更为普遍的set方法;同时关于中止和收集条件要格外注意。

 c++代码如下:

class Solution {
public:
    // 有重复-不能排序->使用set去重-判断非递减-路径中至少包含2个
    // 结果
    vector<vector<int>> res;
    // 路径
    vector<int> path;
    // 回溯函数
    void backtracking(vector<int>& nums, int index) {
        if (path.size() >= 2) {
            res.push_back(path); // 不要return
        }
        // 创建set
        unordered_set<int> uset;
        for (int i = index; i < nums.size(); i++) {
            // 不满足剪枝
            if (!path.empty() && path.back() > nums[i])
                continue;
            // 树层去重
            if (uset.find(nums[i]) != uset.end())
                continue;

            uset.insert(nums[i]);
            path.push_back(nums[i]);
            backtracking(nums, i + 1);
            path.pop_back();
        }
    }
    vector<vector<int>> findSubsequences(vector<int>& nums) {
        backtracking(nums, 0);
        return res;
    }
};

注意点1:首先是收集路径,这里是有条件的,要求路径里的元素至少有两个;这里不需要额外写中止条件

注意点2:选用set去重的逻辑是一样的,关键在于理解这个set的位置,set是每一层递归进入时新建的,就负责本层的元素去重记录,所以不需要回溯。

 2.Leetcode46: 全排列 

题目链接:46. 全排列 - 力扣(LeetCode)

题目解析

       排列和组合的区别在于有顺序要求

 C++代码如下: 

class Solution {
public:
    // 顺序要求-没有重复-收集叶子节点
    // 结果
    vector<vector<int>> res;
    // 路径
    vector<int> path;
    // 回溯函数-不需要index
    void backtracking(vector<int>& nums, vector<bool> used) {
        if (path.size() == nums.size()) {
            res.push_back(path); // 需要return结束本层
            return;
        }
        for (int i = 0; i < nums.size(); i++) {
            if (used[i])
                continue;
            path.push_back(nums[i]);
            used[i] = true;
            backtracking(nums, used);
            path.pop_back();
            used[i] = false;
        }
    }
    vector<vector<int>> permute(vector<int>& nums) {
        vector<bool> used = vector<bool>(nums.size(), false);
        backtracking(nums, used);
        return res;
    }
};

注意点1:首先明确需求就是,不需要排序也不需要index,因为没有重复元素,而且收集的是叶子节点,内容包含所有元素所以不需要index,借助used数组可以在遍历过程中跳过已经选过的元素。

3.Leetcode47:全排列||

题目链接:47. 全排列 II - 力扣(LeetCode)

题目解析

       参考子集||还有全排列

C++代码如下:

class Solution {
public:
    // 有重复-排序去重-排列-无index
    // 结果
    vector<vector<int>> res;
    // 路径
    vector<int> path;
    // 回溯函数
    void backtracking(vector<int>& nums, vector<bool> used) {
        if (path.size() == nums.size()) {
            res.push_back(path);
            return;
        }

        for (int i = 0; i < nums.size(); i++) {
            if (i > 0 && nums[i] == nums[i - 1] && !used[i - 1])
                continue;
            if (used[i])
                continue;

            used[i] = true;
            path.push_back(nums[i]);
            backtracking(nums, used);
            used[i] = false;
            path.pop_back();
        }
    }
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        vector<bool> used = vector<bool>(nums.size(), false);
        sort(nums.begin(),nums.end());
        backtracking(nums, used);
        return res;
    }
};

注意点1:一定要记得排序

 

总结


打卡第 26天,坚持!!!

js逆向第3例:蝉妈妈大屏实时数据formDataSign加密 蝉妈妈大屏抖音直播实时数据是抓取抖音直播间数据的实时数据,有类似需求的公司但没有能力去搞定抖音,抓取蝉妈妈数据也是一个不错的选择。接下来就是调试找到加密点,说句题外话蝉妈妈的所有js文件打包方式用的都是webpack5,那如何区分打包方式可以阅读这篇文章。时间戳 ,经过观察发现加密参数是实时变化的。这个函数扣下来,在浏览器控制台中测试一下。言归正传,打断点找到变量。继续打断点向上找又发现了。查看请求参数,可以看到。请求的内容,那么这个。 阅读详情

相关推荐

程序员实战:DINOv3 权重文件下载与本地化部署全流程指南

Meta开源的DINOv3视觉大模型凭借70亿参数和17亿图像训练,在语义分割、目标检测等任务表现优异。本文详解预训练权重的获取渠道、校验方法和加载实践。开发者可通过HuggingFace或GitHub获取不同版本权重,包括针对服务器端的ViT系列和边缘设备的ConvNeXt系列。文章提供MD5校验代码确保文件完整性,并给出PyTorch和Transformers两种加载方式。特别强调7B模型需16GB GPU内存,建议根据硬件条件选择合适版本,如边缘设备使用ConvNeXt-Tiny。最后指出DINOv3

xiugou3365的博客 5908

代码随想录算法训练营:5/60

包含LC的四道题目,还有相应概念的补充。代码随想录 (programmercarl.com)https://programmercarl.com/#%E6%9C%AC%E7%AB%99%E8%83%8C%E6%99%AF打卡第5天,坚持!!!

Dustin_c的博客 1321

Navcat最新版的激活和安装教程(全网最靠谱,最快捷的方式)

现在最新版本navcat已经出到了16.3了,并且新版navcat也支持连接redis和图标等更多样化的功能,但是比较头疼的一件事就是,只能试用14天。那么接下来小编教大家如何用最简单的方式使用最新版navcat16.

weixin_50737119的博客 2万+

代码随想录算法训练营第60期第六天打卡

大家好,新的一周开始了,过去的数组与链表不知道大家掌握的如何?今天我们就要开始哈希表了,如果大家觉得没有掌握扎实数组与链表一定要回去好好复习一下,因为接下来的哈希表有些操作还是会基于数组与链表的基础知识,因此大家一定要把基础打好。那么废话不多说,我们直接开始今天的主题——哈希表。 既然我们要逐渐使用哈希表解决问题,我们就要先来了解哈希表的理论基础,首先大家可以通俗地认为哈希表就是一个数组,那哈希表常用来解决什么问题呢?代码随想录网站上有说明哈希表主要是查找一个元素在不在数组里,那有的朋友可能就很

2401_83782806的博客 947

R语言 百度坐标转换至WGS84坐标

本文利用R语言封装了百度坐标转换至WGS84坐标的函数,亲测有效,提供了便捷的百度坐标转换方法。

qingchen98的博客 2135

MIPI D-PHY TX 一致性测试实例解析 Part 02

如果测过1.3.x,并对这组测试的细节已经熟悉的前提下,1.4.x的测试将会变得轻松,因为几乎相同的测试项被用于时钟通道的数据测量。

一只豌豆象的博客 8316

代码随想录算法训练营第60期第七天打卡

今天来到了哈希表比较难的地方,因为似乎只用哈希表解决不了问题了,还得使用双指针,所以今天有道题目叫做三数之和被称为是很多人梦破碎的地方,究竟为啥这样说呢?其实刷完之后就会了解,三数之和的确很难,因为它是一个综合题,我们一起进入今天的题目。 首先,我们可以来看一下这一道题的思路,其实我感觉这道题其实相比于三数之和要简单,这个题还是可以通过哈希方法解决,那思路如何呢?其实我们可以先找两个数,然后再去哈希表中去寻找剩下的两个数,我说的可能比较笼统,大家看到题目的具体内容就可以明白,我们来看一下具体的题

2401_83782806的博客 1136

Qt之自定义QToolTip,去掉显示动画和隐藏延时

先来看看Qt原生QToolTip的缺点:1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。2.默认显示10多秒才消失,当然这个时间是可以设置的,但是如果我想一直显示呢?总不能设置一个超级大的时间吧。3.鼠标移出控件后(调用QToolTip::showText时传入了控件指针)默认300毫秒弹窗才隐藏。而且这个时间没法设置,如果想立即隐藏就没办法了。

草上爬的博客 4268

代码随想录-算法训练营day60(单调栈03:柱状图中最大的矩形)

单调栈03:数组中的最大矩形

weixin_61931006的博客 675

【异常】Nacos 2.x 核心报错:Server check fail (gRPC 端口连不通) 深度排查

如果 Nacos 运行在 K8s 中,需确保对应的Servicemetadata:spec:ports:port: 8848port: 9848 # 必须暴露此端口selector:app: nacos在 Nacos 2.x 时代,“端口成套出现”是基础设施配置的基本要求。遇到连接失败时,首要检查的不是业务配置,而是网络链路上主端口 + 1000的 TCP 通讯是否被放行。更多关于 AI + 教育领域的干货,可以关注我的微信公众号一时间获取哦~

奶爸的编程之路,也就一周冷个三天 325

QcarCamera-EVS HAL实现(一)

高通车载EVS实现

qq_37057338的博客 2378

代码随想录算法训练营第60期第五十七天打卡

其实今天的题目字符串接龙这道题的确比较难,后面这两道题目不难,这样我们的岛屿问题就算结束了,大家应该总结一下这些岛屿问题,这样慢慢就可以形成我们自己的思路,灵活使用搜索算法,明天我们就会接触一种新的数据结构-并查集,我们明天再见!

2401_83782806的博客 1032

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

代码随想录训练营结营总结

这60天,从8月8号开始实习,到现在转正。中间经历了很多坎坷。不清楚,但是事情终归是要告一段落了。二叉树:BFS、DFS、高度、深度、平衡二叉树、完全二叉树、二叉搜索树。最后几天有点摆烂,不要精神内耗,要专注于当下要做的事情。最难的还是坚持,之后还得继续刷题,保持节奏。动态规划:01背包、完全背包、股票、希望能再之后保持二刷、三刷吧。回溯:组合、排列问题、N皇后。单调栈:接雨水、比大小。栈与队列:自定义结构。贪心:糖果、汽车问题。保持算法水平和能力~

= = 418

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

代码随想录总结篇章

历时两个月60天的代码随想录结束了,本次一刷leetcode收获很多,将经典题目都刷了一遍,感觉到自己的代码能力有显著提升,感谢老师们每天的提醒,原来想着两个月坚持下来是件难事,但坚持下来后发现也没有那么难,日积月累收获良多,下面是各题型总结:来源于同期录友:代码随想录算法训练营总结-优快云博客 来源于同期录友:代码随想录算法训练营总结-优快云博客

qq_60959261的博客 1098

代码随想录-算法训练营day60【单调栈03:柱状图中最大的矩形】

代码随想录-算法训练营day60【单调栈03:柱状图中最大的矩形】

upward 634

代码随想录训练营Day6/60

还有一个双指针,一样,后面补。java还得补补,真是挠头。还有一种Hashset。

m0_51491388的博客 318

代码随想录算法训练营第三十六天 _ 贪心算法_435.无重叠区间、763.划分字母区间、56.合并区间。

【代码】代码随想录算法训练营第三十六天 _ 贪心算法_435.无重叠区间、763.划分字母区间、56.合并区间。

weixin_46367158的博客 558

二刷代码随想录——回溯day26

一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油!

qq_43264167的博客 437

代码随想录算法训练营DAY6/60 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和

哈希表理论基础什么时候想到用哈希法,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。这句话很重要,大家在做哈希表题目都要思考这句话。(出自卡哥)例如要查询一个名字是否在这所学校里。要枚举的话时间复杂度是O(n),但如果使用哈希表的话, 只需要O(1)就可以做到。内容摘自哈希函数哈希碰撞。

m0_74105654的博客 945

代码随想录算法训练营第七天

听一路八卦并且没被认出来,总而言之,先把这60天努力度过,然后再说!还是需要一点提示,比如生成这个哈希表后,可以umap[int]++,这种玩法。看了标准答案,第三个for可以省去,因为第二个for里是所有可能是负数的情况。没有上帝视角扶,我应该是整不完啊,9点半到11点半,半扶。完全没搞出来啊,思路看完之后甚至以为right不动就是全部情况,好吧好吧,string的用法咱也不会啊,用圆括号肯定是不对的。完全没有考虑到,去重方式大概理解了,这题周末需要重新做一下。454.四数相加II。

weixin_41902984的博客 252

代码随想录算法训练营之JAVA|第五天| 242. 有效的字母异位词

看完题目,可以很明显的感知到出题人的意图,就是让我统计两个字符串的字母是不是相同的。于是很自然的第一想法就是将两个字符串的字母统计出来,放到一个hash表(java的map)中,然后相减,最后hash表中是否有值不为0的字母,如果没有则返回true,如果有,则返回false,于是产生了下面的代码。还会有一种想法:因为题目已经说明字符串只会出现小写的字母,因此我们可以提前预设好26个位置,如果该字母在s字符串出现则加一,如果在t字符串出现则减一,最后遍历这26个位置,看是否有 不为0的情况出现。

BlingZeng的博客 258

算法60天:Day 6数组的进阶:哈希表

代码随想录(截图自参考【1】) 本系列是代码随想录算法训练营的学习笔记之day6,主要记录一下刷题的过程,以及核心知识点和一些值的记录的问题。 代码随想录的资源都是免费的,具体可以看参考链接【1】。 今日知识点 哈希表理论基础: 哈希表,散列表,都指的是hash table;哈希表是根据关键码的值而直接进行访问的数据结构(比如python中的字典);数组其实也是hash表,其key就是下标,value是对应的元素; 哈希表适合用于快速查询;哈希表是以空间换时间; 哈希函数 比如要查询一个同学在不在一个

qq_41387508的博客 401

代码随想录算法训练营之JAVA|第二十六天| 332. 重新安排行程

今天是第26天刷leetcode,立个flag,打卡60天。

BlingZeng的博客 183

2024年Linux最全代码随想录算法训练营第十三天 LeetCode 239(2)

该双端队列的First端一定为该队列中的最大值,具体实现方式为:获取数组当前元素的下标,若队列为空则将该下标值从 Last 端入队,若不为空,则一直与 Last 端的数字代表的数组中的元素比较大小,若大于,则将原队列中的Last端的数从右侧出队,直到队列为空或者小于队列中的元素代表的数组值。遍历HashMap,将每个元素添加到堆中,若元素总个数大于 k ,则将堆顶(最小值)弹出。首先使用 HashMap 记录数组中每个元素及其对应的出现次数,对 HashMap 中的元素按照 Value ,即次数进行排序。

2401_83739821的博客 275

随想录训练营26/60 | LC 332.重新安排行程;LC 51. N皇后;LC 37. 解数独

和n皇后差不多,每次写下数的时候要判断:该数在这行是否已经出现过,在这列是否已经出现过,在这九宫格是否已经出现过,若没有就填入。二叉树的层内为每个空位置可以取得数的范围(1-9),二叉树的深度为空位置的个数。:从固定机场出发,搜索从其开始的航班,然后按顺序记录航班的行程。已经去过的地方不能再去,所有的机票都要使用但不能重复使用,只有当这样,才可以保存行程。小的满足的话,就直接返回小的。:重点是构造一个二维数据结构(棋盘),当一个位置被占用后,该位置的行、列、两条斜线都同时被占用。

weixin_43845977的博客 202

随想录训练营31/60 | LC 435. 无重叠区间;LC 763.划分字母区间;LC 56. 合并区间

统计最大的非重叠区间的个数,再让总区间个数减去非重叠区间个数就最少的是删除区间的个数。**像上一篇文章讲的类似,对区间进行排序,然后遍历区间,若区间去上一区间有重叠的,就更新重叠区间边界;若区间去上一区间没有重叠的,就增加非重叠区间个数。划分时要注意,第一次划分要让下标减去-1才可以得到划分的个数,后面只需让下标减去上次划分得到的下标即可。:将区间按照起始位置进行排序,然后依次插入到result中,若插入的区间和result最后的区间有重叠就将result最后一个区间进行扩充;

weixin_43845977的博客 216

代码随想录算法训练营第六天_哈希表 _ 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、 1. 两数之和 、补160链表相交。

一个元素是否出现集合里的时候,就要考虑哈希法。

weixin_46367158的博客 97
上一篇: 代码随想录算法训练营:24/60
下一篇: 代码随想录算法训练营:27/60
Dustin_c
博客等级 码龄3年 391粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值