day2·算法-快乐数-有效三角形个数

在这里插入图片描述

今天又来更新啦,准备蓝桥杯的小伙伴可以和我一起来刷题,建议大家先看题,整理出思路,再看如何用简单的写法将思路构建出来,然后优化细节,找到解决某些例外出现的方法,从而成功解答这道题。
在这里插入图片描述

快乐数<-题目链接
在这里插入图片描述
做题思路:
首先观察成功的情况
在这里插入图片描述
只要当结果为1时,就返回true。
在这里插入图片描述
这种情况,就发现在运算过程中会进入一个循环,但这个循环中不会出现1,这样就返回false。
思路
首先我们来验证为什么不会出现出现无限不循环的情况。

要知道这道题的范围
在这里插入图片描述
数据的最大范围2的十次方为1024,2的31次方大概为102410241024,我们就直接假设为9999999999,他的下一位为810。
鸽巢原理
有x个鸽子窝,有x+1只鸽子,那么至少有一个鸽子窝里有两只鸽子。
所以说,不管n的值为多少,n在变化的过程后一定是会小于810的,这个结论我想大家一定明白。
现在我们随便给一个数,让他计算811次,在计算的过程中由于不是循环的,所以会产生811个新的数据,然而我们的变化范围是1~810所以和实际不符合,所以这个计算过程一定是循环的。
OK,现在我们已经知道数据计算的过程一定是一个循环,不知道大家做过这样一道题目没,判断一个链表是否带环,我们的写法通常是实现双指针从而求解。
对于这道题,我们就还是使用双指针算法的思想。
不同的是,对于链表处的快指针走两步,这里的是运算两次。

int bitSum(int n) // 返回 n 这个数每⼀位上的平⽅和{int sum = 0;while(n){int t = n % 10;sum += t * t;n /= 10;}return sum;}bool isHappy(int n) {int slow = n, fast = bitSum(n);while(slow != fast){slow = bitSum(slow);fast = bitSum(bitSum(fast));}return slow == 1;}

还有一种写法就是让他们一直循环,指定一个比较大的数作为循环次数,在循环过程中如果出现1,那就返回true,如果一直没有,那就返回false。

class Solution {
public:int key(int x){int num=0;while(x>0){int a=x%10;x=x/10;num+=pow(a,2);}return num;}bool isHappy(int n) {int k=7;while(k>0){n=key(n);if(n==1){return true;}k--;}return false;}
};

这里尝试了一下,其实循环7次就可以判断出所有的测试用例。虽然有点不严谨,但能过就成。
有效三角形的个数
在这里插入图片描述

首先,我们都知道,给你三条边,构成三角形的条件是小的那两条边的和大于大的那条边,局可以验证是否为三角形。
暴力求解的思路:
所定一个数字,依次遍历其他数字,这种写法的话时间复杂度为n3
在这里插入图片描述
得到三个数,在进行判断就好了。
知道
优化解法
既然要知道最大的数,我们就可以先对数组进行排序,然后再进行判断,从后往前指定最大的数,判断这个数为最大边长的数会产生几个三角形,判断完成之后向前移位,在判断倒数第二大得数作为最大边长会产生几个三角形。
在前边遍历时,如何进行遍历呢?
如下动图展现
在这里插入图片描述
这种写法,在指定end要进行n次循环,遍历时使用双指针思想,只进行一次循环,所以优化后的代码只需要O(N2)不到即可解决问题。
当然还可以进行优化,直接将second放在判断位置即(end)前,如果first和second上的两个数判断不成立,那就直接++left,直到确定是三角形,此时right-left的值就是right作为第二条边时可以产生的三角形数目,因为left前边的数大于等于left,一定符合条件。
在这里插入图片描述
然后second–,继续判断,直到first和second会和,再将end向前移动。
在这里插入图片描述

代码实现:

class Solution {
public:int triangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int end=nums.size()-1;int count=0;for(int i=end;i>1;i--){int left=0;int right=i-1;while(left<right){if(nums[left]+nums[right]>nums[i]){count+=right-left;right--;}else{left++;}}}return count;}
};

下一篇文章我会给大家带来三数之和,四叔之后的讲解,有收获的话留下你的赞吧!有问题请赐教,我会虚心改正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

群发邮件的免费软件?做外贸用什么邮箱好?

群发邮件的免费软件有哪些&#xff1f;好用的邮件群发软件&#xff1f; 在数字时代&#xff0c;邮件已成为人们沟通的主要方式之一。有时候&#xff0c;我们需要给大量的联系人发送信息&#xff0c;这时候&#xff0c;群发邮件就显得格外重要。接下来蜂邮就来探讨一下那些值得…

SuperMap iDesktopX 11i(2023) 新特性之按过滤条件删除对象

作者&#xff1a;bsy 文章目录 前言功能入口&#xff1a;参数说明&#xff1a;结果展示&#xff1a; 前言 当对一个大数据量的数据集删除多个数据时&#xff0c;旧版本的 iDesktopX 可以从地图中选择要素删除&#xff0c;也可以从属性表中选中一行进行删除&#xff0c;但是操作…

Transformer简单理解

目录 一、CNN存在的问题&#xff1a;二.Transformer整理架构分析&#xff1a;1.Linear Projection of Flattened Patches层形成Patch&#xff1a;2.对每个Patch进行位置编码Position Embedding&#xff1a;3.Transformer Encoder: 三.公式解读&#xff1a; 一、CNN存在的问题&a…

Ansys Zemax | 如何使用光学制造全息图修正像差

附件下载 联系工作人员获取附件 本文介绍了利用光学全息图降低单透镜像差的方法。在描述了表示全息图构造光束的两个 ZMX 文件之后&#xff0c;本文演示了如何在重现文件中设置 OFH。然后解释了如何轻松地从重现文件中访问任何结构造光束变量&#xff0c;以实现衍射受限单透镜…

数据结构学习 jz45 把数组排成最小的数

关键词&#xff1a;贪心 排序 快速排序 题目&#xff1a;破解闯关密码 思路&#xff1a; 快排自己制定快排规则 开辟一个vector存string&#xff0c;自己制定排序规则&#xff0c;然后用快排比较string大小。 排序规则&#xff1a; sort(strs.begin(),strs.end(),[](string…

建造者模式深入理解:演示建造单个和多个产品的实践,结合模板模式,通俗易懂

首先呢看下建造者的定义是什么样的&#xff0c;先读一遍 建造者模式 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它主要用于将一个复杂对象的构建过程与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表现形式。这种模式…

编程笔记 html5cssjs 040 CSS盒子模型

编程笔记 html5&css&js 040 CSS盒子模型 一、CSS 盒子模型二、元素的宽度和高度三、最终元素的总宽度四、元素的总高度五、练习小结 网页是靠分成不同的块&#xff0c;再赋予这些块各不相同的属性来布局的。所以这个“块”是一个基础。先看块本身的构造。 一、CSS 盒子…

深度学习笔记(四)——使用TF2构建基础网络的常用函数+简单ML分类实现

文中程序以Tensorflow-2.6.0为例 部分概念包含笔者个人理解&#xff0c;如有遗漏或错误&#xff0c;欢迎评论或私信指正。 截图和程序部分引用自北京大学机器学习公开课 TF2基础常用函数 1、张量处理类 强制数据类型转换&#xff1a; a1 tf.constant([1,2,3], dtypetf.floa…

网络传输文件软件哪个好?企业该如何选择?

随着互联网技术的飞速发展&#xff0c;网络传输文件软件已经成为企业日常工作中不可或缺的一部分。然而&#xff0c;在市场上众多的网络传输文件软件中&#xff0c;很多企业对于如何选择合适的方案感到困惑。那么&#xff0c;究竟什么是网络传输文件软件&#xff1f;它有哪些作…

怎么注册微商城?开启微商城之旅

在这个数字化时代&#xff0c;微商城的出现为商家提供了一个全新的机会&#xff0c;商家企业可以通过微商城来展示和销售自己的产品。而对于一些商家而言&#xff0c;不知道怎么注册微商城。下面给大家做一个简单的分享。 第一步&#xff1a;选择合适的微商城搭建工具 在注册…

计算机毕业设计 | SpringBoot宠物店管理系统(附源码)

1&#xff0c;绪论 项目背景 我国已经成为世界第二大经济体&#xff0c;经济实力高速发展以及百姓生活水平的普遍提高&#xff0c;不断地要求企业提供更加多元化的娱乐方式&#xff0c;更加快速和方便的服务&#xff0c;因此对宠物行业也提出了更加严格的要求&#xff0c;如管…

洛谷 P1523 旅行商简化版【线性dp+npc问题简化版】

原题链接&#xff1a;https://www.luogu.com.cn/problem/P1523 题目背景 欧几里德旅行商(Euclidean Traveling Salesman)问题也就是货郎担问题一直是困扰全世界数学家、计算机学家的著名问题。现有的算法都没有办法在确定型机器上在多项式时间内求出最优解&#xff0c;但是有…

二叉树(完全二叉树,满二叉树,二叉树的特性,遍历方式,根据遍历方式画出完整的二叉树图相关例题)

目录 基本概念 一、二叉树&#xff08;满二叉树&#xff0c;完全二叉树&#xff09; 二、二叉树的特性 1、若规定根节点的层数为1&#xff0c;则一棵非空二叉树的第i层最多有2^(i-1) 个节点&#xff08;i>0&#xff09; 2、若规定只有根节点的二叉树的深度为1&#xff0…

人力资源智能化管理项目(day01:基础架构拆解)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈 一、基础架构拆解 1.拉取模板代码 git clone GitHub - PanJiaChen/vue-admin-template: a vue2.0 minimal admin template 项目名 2.core-js…

使用WAF防御网络上的隐蔽威胁之SQL注入攻击

SQL注入攻击是一种普遍存在且危害巨大的网络安全威胁&#xff0c;它允许攻击者通过执行恶意的SQL语句来操纵或破坏数据库。 这种攻击不仅能够读取敏感数据&#xff0c;还可能用于添加、修改或删除数据库中的记录。因此&#xff0c;了解SQL注入攻击的机制及其防御策略对于保护网…

6.3.1认识Camtasia4(1)

6.3.1认识Camtasia4 安装完Camtasia4(本书使用Camtasia4.0.1版本)后&#xff0c;单击【开始】|【程序】|【Camtasia Studio 4】|【Camtasia Studio】&#xff0c;启动Camtasia Studio&#xff0c;启动后界面如图6-3-1所示。 图6-3-1 Camtasia Studio界面 Camtasia Studio窗口中…

打印的前后顺序

面试题经常会有 <script>console.log(1)setTimeout(function(){console.log(2)})console.log(3)let pnew Promise((resolve,reject) >{console.log(4)resloved(hhhhhh)})p.then(res >{console.log(res)console.log(5)},res >{console.log(7)})console.log(6)&l…

Git版本控制——分支

分支 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着可以把工作从开发主线上分离开来进行重大的Bug修改、开发新的功能&#xff0c;以免影响开发主线。 查看本地分支 git branch创建本地分支 git branch 分支名切换分支(checkout) git checkout 分支名创建…

Python源码26:海龟画图turtle画向日葵

---------------turtle源码集合--------------- Python教程43&#xff1a;海龟画图turtle画小樱魔法阵 Python教程42&#xff1a;海龟画图turtle画海绵宝宝 Python教程41&#xff1a;海龟画图turtle画蜡笔小新 Python教程40&#xff1a;使用turtle画一只杰瑞 Python教程39…

萌宠宠物用品商城设计与制作-计算机毕业设计源码79718

摘要 在社会快速发展的影响下&#xff0c;宠物商城继续发展&#xff0c;大大增加了宠物用品的数量、多样性、质量等等的要求&#xff0c;使宠物用品商城的管理和运营比过去十年更加困难。依照这一现实为基础&#xff0c;设计一个快捷而又方便的萌宠宠物用品商城是一项十分重要并…