【Leetcode -766.托普利茨矩阵 -771.宝石与石头】

这篇具有很好参考价值的文章主要介绍了【Leetcode -766.托普利茨矩阵 -771.宝石与石头】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Leetcode -766.托普利茨矩阵

题目:给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。
如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。

示例 1:
输入:matrix = [[1, 2, 3, 4], [5, 1, 2, 3], [9, 5, 1, 2]]
输出:true
解释:
在上述矩阵中, 其对角线为:
“[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”。
各条对角线上的所有元素均相同, 因此答案是 True 。

示例 2:
输入:matrix = [[1, 2], [2, 2]]
输出:false
解释:
对角线 “[1, 2]” 上的元素不同。

提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 20
0 <= matrix[i][j] <= 99

思路:思路是逐一判断当前元素的左上角的元素是否与当前元素相等,不相等则返回false;

		bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize)
		{
		    // i 和 j 都从下标为 1 开始,逐一判断左上角的元素是否等于当前元素
		    int i = 1, j = 1;
		
		    // i 遍历行,j 遍历这一行的某个元素
		    while (i < matrixSize)
		    {
		        while (j < matrixColSize[0])
		        {
		            //j 不等于0,即不能是第一个元素,如果是第一个元素,就没有左上角的元素,所以从第二个元素开始判断
		            //如果当前元素不等于左上角元素,并且不是第一个元素,就返回 false
		            if (j != 0 && matrix[i][j] != matrix[i - 1][j - 1])
		                return false;
		            else
		                j++;
		        }
		
		        //遍历完一行,i++,继续下一行;并且将 j 置0
		        i++;
		        j = 0;
		    }
		
		    //如果前面没有返回false,说明这个矩阵是托普利茨矩阵
		    return true;
		}

Leetcode -771.宝石与石头

题目:给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。
stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
字母区分大小写,因此 “a” 和 “A” 是不同类型的石头。

思路:思路是两次遍历,先遍历宝石的类型,在我拥有的石头中遍历,如果和当前遍历的宝石类型相同,即是宝石,使用 ans 统计,最终返回 ans;

示例 1:
输入:jewels = “aA”, stones = “aAAbbbb”
输出:3

示例 2:
输入:jewels = “z”, stones = “ZZ”
输出:0

提示:
1 <= jewels.length, stones.length <= 50
jewels 和 stones 仅由英文字母组成
jewels 中的所有字符都是 唯一的文章来源地址https://www.toymoban.com/news/detail-468045.html

		int numJewelsInStones(char* jewels, char* stones)
		{
		    //返回的答案
		    int ans = 0;
		
		    //先遍历宝石的字符串
		    for (int i = 0; i < strlen(jewels); i++)
		    {
		        //遍历我拥有的石头,如果是宝石 ans 就统计
		        for (int j = 0; j < strlen(stones); j++)
		        {
		            if (jewels[i] == stones[j])
		                ans++;
		        }
		    }
		    return ans;
		}

到了这里,关于【Leetcode -766.托普利茨矩阵 -771.宝石与石头】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 每日一题(注意string里是char)-771. 宝石与石头

    771. 宝石与石头 题目本身没啥难度,两个for循环就可以解决 但是如果使用set可以将时间复杂度优化到o(n) 注:之前python写多了,需要注意c++中string类中是char

    2024年02月15日
    浏览(72)
  • 【力扣每日一题】2023.7.24 宝石与石头

    目录 题目: 示例: 分析: 代码+运行结果: 给我们一个字符串表示宝石的类型,再给我们一个字符串表示我们已经拥有的石头,问我们在石头中能找到多少宝石。 一开始我以为第一个字符串表示一个宝石,结果看看示例,是第一个字符串中每个单独的字符都是表示宝石的。

    2024年02月15日
    浏览(37)
  • ​LeetCode解法汇总LCP 50. 宝石补给

    GitHub - September26/java-algorithms: 算法题汇总,包含牛客,leetCode,lintCode等网站题目的解法和代码,以及完整的mode类,甚至链表代码生成工具都有提供。 欢迎各位勇者来到力扣新手村,在开始试炼之前,请各位勇者先进行「宝石补给」。 每位勇者初始都拥有一些能量宝石, 

    2024年02月07日
    浏览(41)
  • leetcode 1049. 最后一块石头的重量 II

             与分割等和子集类似,可以转化为0-1背包问题。 本题也是需要将数组元素分成两堆,区别在于本题需要使这两堆的差值最小,而之前那题是需要两堆差值为0。          使用之前的一维dp数组的思路,代码如下:

    2024年02月13日
    浏览(44)
  • LeetCode1049. 最后一块石头的重量 II

    一、题目 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出 任意两块石头 ,然后将它们一起粉碎。假设石头的重量分别为 x 和 y ,且 x = y 。那么粉碎的可能结果如下: 如果 x == y ,那么两块石头都会被完全粉碎; 如果 x != y ,

    2024年02月10日
    浏览(37)
  • Leetcode 1049 最后一块石头的重量II

    题意理解 :         有一堆石头,用整数数组  stones  表示。其中  stones[i]  表示第  i  块石头的重量。         每一回合,从中选出 任意两块石头 ,然后将它们一起粉碎。假设石头的重量分别为  x  和  y ,且  x = y 。         思路转化:我们可以将题目转换为

    2024年01月16日
    浏览(38)
  • LeetCode 1049 最后一块石头的重量 II

    题目: 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x = y。那么粉碎的可能结果如下: 如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重

    2024年02月05日
    浏览(44)
  • 【算法设计与分析】拉丁矩阵问题——对于给定的m和n,计算出不同的宝石排列方案数。

    问题描述   现有n种不同形状的宝石,每种宝石有足够多颗。欲将这些宝石排列成m行n列的一个矩阵,m≤n,使矩阵中每行和每列的宝石都没有相同的形状。试设计一个算法,计算出对于给定的m和n,有多少种不同的宝石排列方案。 数据输入   由文件input.txt给出输入数据。

    2024年02月04日
    浏览(41)
  • ( 背包问题) 1049. 最后一块石头的重量 II ——【Leetcode每日一题】

    难度:中等 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出 任意两块石头 ,然后将它们一起粉碎。假设石头的重量分别为 x 和 y ,且 x = y 。那么粉碎的可能结果如下: 如果 x == y ,那么两块石头都会被完全粉碎; 如果 x !=

    2024年02月08日
    浏览(51)
  • 【算法与数据结构】1049、LeetCode 最后一块石头的重量 II

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :本题需要得到石头之间两两粉碎之后的最小值,那么一个简单的思路就是将这堆石头划分成大小相近的两小堆石头,然后粉碎,这样得到的结果必然是最优值。那么如何划分呢?我

    2024年01月21日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包