当前位置: 首页 > article >正文

【Leetcode -412.Fizz Buzz -414.第三大的数】

Leetcode

  • Leetcode -412.Fizz Buzz
  • Leetcode - 414.第三大的数

Leetcode -412.Fizz Buzz

题目:给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:

answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。
answer[i] == “Fizz” 如果 i 是 3 的倍数。
answer[i] == “Buzz” 如果 i 是 5 的倍数。
answer[i] == i (以字符串形式)如果上述条件全不满足。

示例 1:
输入:n = 3
输出:[“1”, “2”, “Fizz”]

示例 2:
输入:n = 5
输出:[“1”, “2”, “Fizz”, “4”, “Buzz”]

示例 3:
输入:n = 15
输出:[“1”, “2”, “Fizz”, “4”, “Buzz”, “Fizz”, “7”, “8”, “Fizz”, “Buzz”, “11”, “Fizz”, “13”, “14”, “FizzBuzz”]

我们的思路是,先生成1-n的数字,再判断它们是否满足FizzBuzz或Fizz或Buzz的条件;要注意返回的空间需要我们自己开辟,我们需要开辟一个二级指针返回,对二级指针的下标访问即解引用的一级指针,用来分配单个字符串的空间;

		char** fizzBuzz(int n, int* returnSize)
		{
		    //返回的数组的指针
		    char** ret = (char**)malloc(sizeof(char*) * n);
		
		    //生成1-n的数
		    for (int i = 1; i <= n; i++)
		    {
		        //分配单个字符串的空间,因为最长的字符串为FizzBuzz,加上'\0'就为9个字符,所以开9个空间
		        ret[i - 1] = (char*)malloc(sizeof(char) * 9);
		
		        //满足同时能被3和5整除,就将FizzBuzz拷贝到ret[i-1]中
		        if (i % 3 == 0 && i % 5 == 0)
		        {
		            strcpy(ret[i - 1], "FizzBuzz");
		        }
		
		        //只满足能被3整除,就将Fizz拷贝到ret[i-1]中
		        else if (i % 3 == 0)
		        {
		            strcpy(ret[i - 1], "Fizz");
		        }
		
		        //只满足能被5整除,就将Buzz拷贝到ret[i-1]中
		        else if (i % 5 == 0)
		        {
		            strcpy(ret[i - 1], "Buzz");
		        }
		
		        //都不能被整数,就将数字转成字符串,使用sprintf函数
		        else
		        {
		            sprintf(ret[i - 1], "%d", i);
		        }
		    }
		    //返回的长度
		    *returnSize = n;
		    return ret;
		}

Leetcode - 414.第三大的数

题目:给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

示例 1:
输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。

示例 2:
输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。

示例 3:
输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。

我们的思路是对数组先进行降序排序,用flag记录当前的元素是第几大的数,flag开始默认为1,然后每次比较相邻的两项,当相邻的两项不相等时,flag++,当flag等于3的时候返回这个数;若遍历完数组还没有返回,就返回最大的数;

		int compare(const void* p1, const void* p2)
		{
		    //return *(int*)p1 > *(int*)p2; 是增序排列
		    //return *(int*)p1 < *(int*)p2; 是降序排列
		    return *(int*)p1 < *(int*)p2;
		}
		
		int thirdMax(int* nums, int numsSize)
		{
		    //使用qsort进行降序排序
		    qsort(nums, numsSize, sizeof(nums[0]), compare);
		
		    //flag记录当前是第几大的数
		    int flag = 1;
		
		    //遍历数组,从下标为1开始,每次与上一项比较是否相等,当不相等的时候flag++
		    //并且当flag等于3的时候,即已经找到第三大的数,就返回这个数
		    for (int i = 1; i < numsSize; i++)
		    {
		        if (nums[i] != nums[i - 1] && ++flag == 3)
		        {
		            return nums[i];
		        }
		    }
		
		    //遍历完数组还没有返回,就返回最大的数;因为是降序,返回第一项即可
		    return nums[0];
		}

http://www.kler.cn/a/18407.html

相关文章:

  • 阿里巴巴通义灵码推出Lingma SWE-GPT:开源模型的性能新标杆
  • 中文书籍对《人月神话》的引用(161-210本):微软的秘密
  • 【MySQL从入门到放弃】InnoDB磁盘结构(一)
  • 券商隔夜单自动下单交易接口
  • 监控录音如何消除杂音?降低录音噪音的五个技巧
  • Vue常用加密方式
  • Python--一言不合就try一下?
  • 论文ai生成-一键生成论文的软件
  • 二维数组---C语言(行列抽象思维)
  • 极光笔记 | 极光推出“运营增长”解决方案,开启企业增长新引擎
  • docker网卡的IP地址修改
  • openGL入门
  • 地狱级的字节跳动面试,6年测开的我被按在地上摩擦.....
  • 双目测距--3 双目标定
  • 回调函数_回顾
  • 远程桌面连接出现了内部错误怎么解决?
  • 20230506在Ubuntu22.04下使用python3下载合并ts切片
  • FTP Entering Extended Passive Mode
  • 为什么越来越多的设计师开始用云渲染来渲图?
  • 关于maven
  • Hive为什么要分桶?
  • 【数据结构】Treap树堆
  • django:django2配置websocket
  • 删除的文件怎样恢复?实用的方法
  • TomcatServletHTTP
  • 【Linux】项目自动化构建工具 —— make/Makefile