leetcode(36-40)

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载 最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress... 阅读详情

36. 有效的数独

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

上图是一个部分填充的有效的数独。

数独部分空格内已填入了数字,空白格用 '.' 表示。

示例 1:

输入:
[
  ["5","3",".",".","7",".",".",".","."],
  ["6",".",".","1","9","5",".",".","."],
  [".","9","8",".",".",".",".","6","."],
  ["8",".",".",".","6",".",".",".","3"],
  ["4",".",".","8",".","3",".",".","1"],
  ["7",".",".",".","2",".",".",".","6"],
  [".","6",".",".",".",".","2","8","."],
  [".",".",".","4","1","9",".",".","5"],
  [".",".",".",".","8",".",".","7","9"]
]
输出: true

示例 2:

输入:
[
  ["8","3",".",".","7",".",".",".","."],
  ["6",".",".","1","9","5",".",".","."],
  [".","9","8",".",".",".",".","6","."],
  ["8",".",".",".","6",".",".",".","3"],
  ["4",".",".","8",".","3",".",".","1"],
  ["7",".",".",".","2",".",".",".","6"],
  [".","6",".",".",".",".","2","8","."],
  [".",".",".","4","1","9",".",".","5"],
  [".",".",".",".","8",".",".","7","9"]
]
输出: false
解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。
     但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。

说明:

  • 一个有效的数独(部分已被填充)不一定是可解的。
  • 只需要根据以上规则,验证已经填入的数字是否有效即可。
  • 给定数独序列只包含数字 1-9 和字符 '.' 。
  • 给定数独永远是 9x9 形式的。
class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        for(int i=0;i<9;i++){
            int row[9]={0};
            int col[9]={0};
            int cube[9]={0};
            for(int j=0;j<9;j++){
                if(board[i][j]!='.'){
                    if(row[board[i][j]-'1']==1) return false;
                    else row[board[i][j]-'1']=1;
                }
                if(board[j][i]!='.'){
                    if(col[board[j][i]-'1']==1) return false;
                    else col[board[j][i]-'1']=1;
                }
                int cubeX=3*(i/3)+j/3;
                int cubeY=3*(i%3)+j%3;
                if(board[cubeX][cubeY]!='.'){
                    if(cube[board[cubeX][cubeY]-'1']==1) return false;
                    else cube[board[cubeX][cubeY]-'1']=1;
                }
            }
        }
        return true;
    }
};

37. 解数独

编写一个程序,通过已填充的空格来解决数独问题。

一个数独的解法需遵循如下规则:

  1. 数字 1-9 在每一行只能出现一次。
  2. 数字 1-9 在每一列只能出现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

空白格用 '.' 表示。

一个数独。

答案被标成红色。

Note:

  • 给定的数独序列只包含数字 1-9 和字符 '.' 。
  • 你可以假设给定的数独只有唯一解。
  • 给定数独永远是 9x9 形式的。
class Solution {
public:
    int row[9][10];
    int column[9][10];
    int grid[9][10];
    int flag=0;
    void solve(int r,int c,vector<vector<char>>& board)
    {
        int i;
        if(r==9) {
            flag=1;
            return;
        }
        if(board[r][c]=='.') {
            for(i=1;i<=9;i++) {
                if(row[r][i]==0&&column[c][i]==0&&grid[3*(r/3)+c/3][i]==0){
                    board[r][c]=i+'0';
                    row[r][i]=1;
                    column[c][i]=1;
                    grid[3*(r/3)+c/3][i]=1;
                    if(c==8) solve(r+1,0,board);
                    else solve(r,c+1,board);
                    if(flag==1) return;
                    board[r][c]='.';
                    row[r][i]=0;
                    column[c][i]=0;
                    grid[3*(r/3)+c/3][i]=0; 
                }
            }
        }
        else{
            if(c==8) solve(r+1,0,board);
            else solve(r,c+1,board);
        }
    }
    void solveSudoku(vector<vector<char>>& board) {
        int i,j,k;
        for(i=0;i<9;i++){
            for(j=0;j<10;j++)
                row[i][j]=column[i][j]=grid[i][j]=0;
        }
        for(i=0;i<9;i++){
            for(j=0;j<9;j++){
                if(board[i][j]!='.'){
                    k=board[i][j]-'0';
                    row[i][k]=1;
                    column[j][k]=1;
                    grid[(i/3)*3+j/3][k]=1;
                }
            }
        }
        solve(0,0,board);
    }
};

38. 报数

数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221

1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: "1"

示例 2:

输入: 4
输出: "1211"
class Solution {
public:
    string countAndSay(int n) {
        string res="1",temp="";
        for(int i=1;i<n;i++)
        {
            int t=0;
            while(t<res.length())
            {
                int num=1;
                while(res[t]==res[t+1]&&(t+1)<res.length())
                {
                    num++;
                    t++;
                }
                temp=temp+to_string(num)+res[t];
                t++;
            }
            res=temp;
            temp="";
        }
        return res;
    }
};

39. 组合总和

 

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的数字可以无限制重复被选取。

说明:

  • 所有数字(包括 target)都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入: candidates = [2,3,6,7], target = 7,
所求解集为:
[
  [7],
  [2,2,3]
]

示例 2:

输入: candidates = [2,3,5], target = 8,
所求解集为:
[
  [2,2,2,2],
  [2,3,3],
  [3,5]
]
class Solution {
public:
    vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
        sort(candidates.begin(), candidates.end());
        vector<vector<int>> res;
        vector<int> tmp;
        findAll(candidates, res,tmp,target,0);
        return res;
    }
    void findAll(const vector<int>& candidates, vector<vector<int>>& res, vector<int>& tmp, int target, int index)
    {
        if (target == 0) {
            res.push_back(tmp);
            return;
        } 
        if (target < candidates[0]){
            return;
        }
        for(int i = index; i < candidates.size(); ++i){
            tmp.push_back(candidates[i]);
            findAll(candidates, res, tmp, target-candidates[i],i);
            temp.pop_back(); 
            }
        }
};

40. 组合总和 II

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用一次。

说明:

  • 所有数字(包括目标数)都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集为:
[
  [1, 7],
  [1, 2, 5],
  [2, 6],
  [1, 1, 6]
]

示例 2:

输入: candidates = [2,5,2,1,2], target = 5,
所求解集为:
[
  [1,2,2],
  [5]
]
class Solution {
public:
    vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
        sort(candidates.begin(),candidates.end());
        vector<vector<int>> res;
        vector<int> tmp;
        find(candidates,tmp,res,target,0);
        return res;
    }
    void find(vector<int>& candidates,vector<int>& tmp,vector<vector<int>>& res,int target,int index){
        for(int i=index;i<candidates.size();i++){
            if(target==candidates[i]){
                tmp.push_back(candidates[i]);
                res.push_back(tmp);
                tmp.pop_back();
                return;
            }
            if(target<candidates[i]){
                return;
            } else {
                tmp.push_back(candidates[i]);
                find(candidates,tmp,res,target-candidates[i],i+1);
                tmp.pop_back();
                while(i<candidates.size()-1 && candidates[i]==candidates[i+1]){
                    i++;
                }
            }
        }
    }
};

(以上题目均摘自leetcode)

Qt 【window udp 高频采集丢包问题】 使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。 阅读详情

相关推荐

Ubuntu20.04下运行VINS系列:VINS-Mono、VINS-Fusion和GVINS

安装好了VINS-Mono所需的ROS noetic、Eigen3.4.0、Ceres2.10和OpenCV4.2.0等。VINS-Mono是在ROS melodic以及Ceres1的环境下开发的,因此需要适配高版本的环境。

zardforever123的博客 2万+

LeetCode第40题:组合总和ll【python 40/1000】

LeetCode的第40题“组合总和II”要求在一个可能包含重复元素的整数数组中找出所有的组合,这些组合中的元素之和等于给定的目标数。这些组合中的每个数字在每个组合中只能使用一次。本文将探讨三种不同的方法来解决这个问题,并分析它们的时间和空间复杂度。

10年数据\经营分析经验,现任大厂数据分析负责人 1440

高通量测序数据分析:RNA-seq

深度测序相关数据库与数据格式 SRA toolkit 一、NCBI 和EBI、DDBJ组成INSDC,数据内容相同所以找NCBI就行。 (一)NCBI常用数据库 GenBank:遗传序列数据库,收集了所有公开的DNA序列及其注释 GEO (Gene Expression Omnibus) :收集整理各种表达芯片数据,后来加入了甲基化、lncRNA、miRNA、CNV等其他芯片,还有高通量测序数据...

qq_41134363的博客 3万+

有了这几个刷题网站,还愁跳槽不涨薪?

找工作必备,助力涨薪

村雨遥 3415

Ansys Zemax | 公差分析中的补偿器优化:如何提升系统良率?

本文深入探讨了在Ansys Zemax公差分析中如何有效设置与优化补偿器以提升系统良率。文章指出,补偿器是连接理想设计与现实生产的关键,通过模拟实际装配中的调整(如后焦距),能显著改善公差分析的“悲观”预测。详细介绍了补偿器的添加方法、多补偿器策略、评价函数设计以及通过灵敏度分析和蒙特卡洛档案优化补偿效果,旨在帮助光学工程师制定更符合生产实际的公差策略,从而有效提升产品良率。

weixin_28419039的博客 621

华硕三频万兆分布式路由组网实战:从AiMesh 2.0到全屋Wi-Fi 6覆盖

Mesh组网是解决大户型Wi-Fi覆盖难题的主流方案,其核心原理是通过多个节点构建网状网络,实现设备间的无缝漫游。在技术层面,Wi-Fi 6标准、三频设计(包括专属回程频段)和有线回程等技术,共同提升了网络的带宽、稳定性和抗干扰能力。这些技术的工程价值在于,能够为多设备并发、高带宽应用(如4K/8K流媒体、在线游戏、内网文件高速传输)提供可靠支撑。具体到应用场景,例如利用华硕AiMesh 2.0系统,配合三频万兆分布式路由器,可以实现智能的设备连接与负载均衡。通过合理规划节点位置、优先采用有线回程,并进行Q

weixin_34054866的博客 431

leetcode:36. 有效的数独

直观上,我们很容易想到使用哈希表来记录某行/某列/某个小方块出现过哪些数字,来帮助我们判断是否符合「有效数独」的定义。其实,另外,我们可以将box定义成三维数组,更好理解。

OceanStar的博客 1073

硬件工程师学习-硬件的单元测试(UT)(1)电源与时钟的测试

我们在设计的时候,通过控制电源的上电使能管脚或者通过MOSFET、或者专用的电源上电控制芯片,控制不同电源的上电时序,以确保每个芯片的电源上电时序是满足芯片的要求的。我们在测试的时候,需要对相关的要求一一测试,以确认每个上电时序满足要求的。在维基百科中,相位噪声的定义是“时域不稳定性(抖动)导致波形在相位上发生快速、短期、随机的波动,这种波动在频域中的表现即为相位噪声”。单元测试,一般是指基于开发人员自行开展的功能测试及各个功能单元的单元测试,是硬件信号级的测试,分为基本测试和信号完整性测试。

qq_43416206的博客 4034

leetcode40. 组合总和 II

1.题目描述: 给定一个候选人编号的集合candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。 2.当开始写的回溯代码(已完成剪枝): 类似的题型做多了直接按照模板写。一跑发现有重复的结果。原因是此题数组元素会有重复的,[10,1,2,7,6,1,5]排序后[1,1,2,5,6,7,10],[1,2,5]和[1,7]会出现两次,这里的1两次分别是索引0

kkkkuuga的博客 616

电能质量仿真:电能质量改善措施仿真_(12).电能质量改善措施综合仿真案例

假设我们有一个微电网系统,该系统包含分布式电源(如光伏板、风力发电机)、储能设备、负荷和电网连接。电压波动:由于负荷的波动和分布式电源的间歇性输出,系统电压出现了不稳定的情况。谐波污染:非线性负荷和逆变器的运行导致系统中出现了显著的谐波污染。频率偏差:分布式电源的波动和负荷的突变导致系统频率出现了偏差。我们需要通过仿真来评估这些问题的影响,并提出相应的改善措施。

2401_87715305的博客 1360

《Python入门到精通》函数详解

函数就是一段「封装」起来的「代码」,目的是提高代码的「模块性」和「复用性」。 2、函数的参数 2.1、变量的就近原则 2.2、传递参数 2.3、形参和实参 2.4、位置参数 2.5、缺省参数 2.6、可变类型和不可变类型 2.7、关键字参数 3、匿名函数 4、函数的返回值

wangyuxiang946的博客 1万+

LeetCode36-有效的数独

LeetCode36-有效的数独 Leetcode / 力扣 36. 有效的数独: 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 注意: 一个有效的数独(部分已被填充)不一定是可解的。 只需要根据以上规

baodream的博客 420

【Zephyr驱动专题】01_深扒MPU6050陀螺仪寄存器

MPU6050作为最常用的6轴运动跟踪器件,其寄存器配置直接影响传感器性能和功能实现。本文将深入解析关键寄存器,并使用逻辑分析仪抓取信号进行分析。

zero的博客 1572

【PythonCode】力扣Leetcode36~40题Python版

力扣36-40

weixin_43790276的博客 1106

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode 36~40

前言 本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕布链接 36. 有效的数独 题解 Short+Simple Java using Strings set,j/3+b+i/3,左j右i import scala.collection.mutable.Set object Solution { def isValidSudoku(board: Array[Ar

Shockang的博客 5976

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【LeetCode Solutions】LeetCode 热题 100 题解(36 ~ 40)

【LeetCode Solutions】LeetCode 热题 100 题解(36 ~ 40)

一只快乐的小蒟蒻~ 1082

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【JavaScript】LeetCode:36-40

【代码】【JavaScript】LeetCode:36-40。

weixin_45980065的博客 1489

【LeetCode Solutions】LeetCode 36 ~ 40 题解

【LeetCode Solutions】LeetCode 36 ~ 40 题解

一只快乐的小蒟蒻~ 748

【LeetCode高频SQL50题-基础版】打卡第7天:第36~40题

在这个博客专栏中,我将为大家提供关于 LeetCode 高频 SQL 题目的基础版解析。LeetCode 是一个非常受欢迎的编程练习平台,其中的 SQL 题目涵盖了各种常见的数据库操作和查询任务。对于计算机科班出身的同学来说,SQL 是一个基础而又重要的技能。不仅在面试过程中经常会遇到 SQL 相关的考题,而且在日常的开发工作中,掌握 SQL 的能力也是必备的。本专栏的目的是帮助读者掌握 LeetCode 上的高频 SQL 题目,并提供对每个题目的解析和解决方案。

热爱编程、热爱生活、热爱探索 921

leetCode 36-40

leetcode79-单词搜索84-柱状图中最大的矩形![在这里插入图片描述](https://img-blog.csdnimg.cn/20210603155427738.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zhbl9fbGVl,size_16,color_FFFFFF,t_70) 79-单词搜索 给定一个 m x n 二维字符网格 b

fan__lee的博客 197

LeetCode 实践练习36-40

LeetCode–36(有效的数独) 方法:遍历每个数字的时候,就看看包含当前位置的行和列以及3x3小方阵中是否已经出现该数字,那么我们需要三个标志矩阵,分别记录各行,各列,各小方阵是否出现某个数字,其中行和列标志下标很好对应,就是小方阵的下标需要稍稍转换一下. C++代码: class Solution { public: bool isValidSudoku(vector&lt;ve...

qq_40104034的博客 211

Python小白 Leetcode刷题历程 No.36-No.40 有效的数独、解数独、外观数列、组合总和、组合总和Ⅱ (有题干 有代码 有思路心得)

Python小白 Leetcode刷题历程 No.36-No.40 有效的数独、解数独、外观数列、组合总和、组合总和Ⅱ 写在前面: 作为一个计算机院的大学生,总觉得仅仅在学校粗略的学习计算机专业课是不够的,尤其是假期大量的空档期,作为一个小白,实习也莫得路子,又不想白白耗费时间。于是选择了Leetcode这个平台来刷题库。编程我只学过基础的C语言,现在在自学Python,所以用Pyth...

LanXiu_的博客 602

力扣爆刷第110天之CodeTop100五连刷36-40

思路:定义dp[i][j]表示以text1[i]和text2[j]为结尾的最长公共子序列,利用这个定义,进行状态推导,如果结尾元素相等,自然各由上一个位置推出,dp[i][j] = dp[i-1][j-1] + 1。题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/description/题目链接:https://leetcode.cn/problems/binary-search/description/

qq_43511039的博客 346

力扣爆刷第90天之hot100五连刷36-40

题目链接:https://leetcode.cn/problems/binary-tree-inorder-traversal/description/?题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/?题目链接:https://leetcode.cn/problems/diameter-of-binary-tree/description/?思路:前序遍历,然后逐个交换节点左右子树即可。

qq_43511039的博客 704

python36块砖36人搬算法_LeetCode 算法系列:第 36 ~ 40题

目录36. 有效的数独37. 解数独38. 外观数列39. 组合总和40. 组合总和 II36. 有效的数独题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,...

weixin_39713686的博客 776

每日5题Day8 - LeetCode 36 - 40

题目要求我们进行判断,我们不需要自己填写,所以要一个标志位,来看当前的值是否在行、列、格中出现过,每当这时候可以考虑使用位掩码。

alimamaalala的博客 495
上一篇: leetcode(31-35)
下一篇: leetcode(41-45)
小小螺丝刀
博客等级 码龄10年 41粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值