算法day02

news/2024/5/20 15:19:33

1、202. 快乐数

如上题所述:

         在该题意规则下,所有的数字变化会有两种情况,其一最后是有的会变化成恒为1的数;其二是有的数会变化会呈现成有规律的环,分别如下图所示:

        可以近似的理解为图一就是一个环,只不过该环的数字都为一;

故此解题思路如下所示:

        本题采用快慢指针,快满指针终究会在环里面相遇,当相遇到的数的数值不为一,则该数不是快乐数,反之则该数为快乐数,代码如下;

class Solution {public int squsum(int n){int sum = 0;while(n != 0){int temp = n % 10;sum += temp * temp;n = n / 10; }return sum;}public boolean isHappy(int n) {int slow = n,fast = squsum(n);while(slow != fast){slow = squsum(slow);fast = squsum(squsum(fast));}if(fast == 1){return true;}else{return false;}}
}

2、11. 盛最多水的容器

 

有上述题意所述,采用左右双指针和单调性的规律解题:

1、定义左右双指针,从最左边和最右边取其中最小的值与指针之间的宽度进行计算其容积并记录在案;

2、有单调性规律可知,选择指针所指数据小的指针移动,并重复第一步,最后比较两次的容积,取最大值;

3、重复上述两个步骤,当左右指针重合时,该循环结束;

代码如下:

class Solution {public int maxArea(int[] height) {int left = 0,right = height.length-1,res = 0;while(left < right){int res1 = Math.min(height[left],height[right]) * (right - left);res = Math.max(res,res1);if(height[left] < height[right]){left ++;}else{right --;}}return res;}
}

 3、611. 有效三角形的个数

        判断三角形的简化准则:最小的两数之和大于最大的一数,则三者可以构成一个三角形;

此题我们使用前后双指针和单调性的规律来解题,算法步骤如下:

步骤一:将数组从小到大序列化;

步骤二:首先固定最右边的最大数;

        如下图所示,找到当前的左右指针,计算指针所指两数之和是否大于固定的最大值;

        情况一:当前的左右指针,计算指针所指两数之和是大于固定的最大值

由于左数+右数>max;所以有单调性可知,(1,14)范围之内的所有数+右数大于max,故此此时可以构成三角形的个数有right-left个,之后right左移;

        情况二:当前的左右指针,计算指针所指两数之和是小于固定的最大值

        由于单调性可知,left右移一个,从而进行新的判断;

步骤三:重复一二步骤的操作,知道max最大值小于到2位置时,循环结束;

代码如下:

class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int res = 0, n = nums.length;for(int max = n-1;max >= 2; max --){int left = 0,right = max - 1;while(left < right){if(nums[left] + nums[right] > nums[max]){res += right - left;right --;}else{left ++;}}}return res;}
}

ps:本次的内容就到这里了,如果大家感兴趣话,就请一键三连哦!!! 


http://www.mrgr.cn/p/50560850

相关文章

Stable Diffusion WebUI 页面设置: 显示 VAE CLIP

目标效果:步骤:到设置Settings页面 -- 搜索 Quicksettings 在列表框中输入 sd_vae 和 CLIP_stop_at_last_layers最后 Apply settings 并 Reload UI完成================# 水平有限 欢迎指正 #=================

【SpringBoot整合系列】SpringBoot整合Thymeleaf

目录 背景Thymeleaf简介Thymeleaf的特征模板引擎是什么 代码示例1.引入依赖2.修改配置文件&#xff0c;添加Thymeleaf的配置信息3.编写HTML模板文件4.编写控制器&#xff0c;返回ModelAndView&#xff0c;进行视图渲染 Thymeleaf语法1.常用标签/属性1.1 th:action1.2 th:method…

Qt常用基础控件总结

一、按钮部件 按钮部件共同特性 Qt 用于描述按钮部件的类、继承关系、各按钮的名称和样式,如下图: 助记符:使用字符"&“可在为按钮指定文本标签时设置快捷键,在&之后的字符将作为快捷键。比如 “A&BC” 则 Alt+B 将成为该按钮的快捷键,使用”&&qu…

React文本溢出组件封装以及高亮提示

React文本溢出组件封装以及高亮提示Abbr 组件:使用场景:当我们需要设置支持最大行数时进行省略展示 当我们需要设置支持设置超过多少字符进行省略展示 当我们需要设置支持关键字高亮展示(有点问题,当关键字被裁剪成...之后,就无法高亮) 当我们需要支持忽略大小写高亮 当我…

边缘智能网关P1600,智慧林业的得力助手

随着科技的不断发展&#xff0c;人工智能、物联网、大数据等先进技术在林业领域的应用日益广泛&#xff0c;为林业管理带来了革命性的变革。智慧林业的核心目标是实现林业资源的数字化、网络化和智能化&#xff0c;从而提高林业管理的效率和水平。边缘智能网关P1600作为一种新型…

AlmaLinux 9.4 正式版发布 - RHEL 二进制兼容免费发行版

AlmaLinux 9.4 正式版发布 - RHEL 二进制兼容免费发行版AlmaLinux 9.4 正式版发布 - RHEL 二进制兼容免费发行版 由社区提供的免费 Linux 操作系统,RHEL 二进制兼容发行版 请访问原文链接:AlmaLinux 9.4 正式版发布 - RHEL 二进制兼容免费发行版,查看最新版。原创作品,转载…

cc6链:绕过cc1的jdk限制

这里回到LazyMap,LazyMap的get方法可以触发后续的rce为什么cc1有jdk版本限制 JDK中的AnnotationInvocationHandler的readObject更新了,所以cc1用不了 但是前面的部分还是存在的,只要我们找到一个新的入口就还是能执行命令 这里回到LazyMap,LazyMap的get方法可以触发后续的r…

第二届数信杯南区wp-easyJava

第二届数信杯南区easyJavawriteup easyJava 用Eclipse Memory Analyzer进行分析,利用OQL查找字符串这里要写正则表达式:我写了\\u.*意思是找unicode字符串,因为这里的中文都做了unicode编码搜索到这么一个字符串列表,转码——红色框框里的是还原后的内容。如下: 想跟你说一…

分布式链路追踪工具Sky walking详解

1&#xff0c;为什么要使用分布式链路追踪工具 随着分布式系统和微服务架构的出现&#xff0c;且伴随着用户量的增加&#xff0c;项目的体量变得十分庞大&#xff0c;一次用户请求会经过多个系统&#xff0c;不同服务之间调用关系十分复杂&#xff0c;一旦一个系统出现错误都可…

建发弘爱 X 袋鼠云:加速提升精细化、数字化医疗健康服务能力

厦门建发弘爱医疗集团有限公司(简称“建发弘爱”)创立于2022年,是厦门建发医疗健康投资有限公司的全资子公司,专业从事医疗健康领域的医疗服务。 建发弘爱通过医疗、健康及产业服务三大板块,为百姓提供医疗和健康全生命周期解决方案。以医疗机构为核心,管理及运营弘爱医院…

Linux-进程调度器

1. 前言 在计算机中&#xff0c;进程的数量远多于cpu的数量&#xff0c;所以就存在&#xff0c;多个进程抢占一个cpu的情况&#xff0c;所以就需要一套规则&#xff0c;决定这些进程被处理的顺序&#xff0c;这就叫做进程调度。 在我的简单理解下&#xff0c;其实就是把进程放…

删除单向链表中数据最小的结点

删除单向链表中数据最小的结点(1)算法的基本设计思想 要找到链表中数据最小的结点,可以使用4指针法。具体步骤如下:定义4个指针,分别命名为MinNodeprev、MinNode、CurrentNodePrev、CurrentNode,MinNodeprev、CurrentNodePrev指向链表的头结点,MinNode、CurrentNode指向…

leetcode 1235

leetcode 1235 代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vector<vector<int>> jobs(n);for(int i0; i<n; i){jobs[i] …

RabbitMQ保证消息的可靠性

一、背景 消息丢失&#xff1a;下图是消息从生产者发送到消费者接收的关系图。通过图片可以看出&#xff0c;消息在生产者、MQ、消费者这三个环节都有可能丢失。 1.1 生产者丢失 生产者发送消息时连接MQ失败生产者发送消息到达MQ后未找到Exchange生产者发送消息到达MQ的Exc…

Java-线程-线程池

0.背景参考资料:Java线程池实现原理及其在美团业务中的实践在 Java 早期,每次创建线程时,都要涉及到线程的创建、销毁以及资源管理,这对于系统的性能和资源利用率是一种浪费。 因此,Java 提供了线程池的概念,以提高线程的管理效率和性能。资源管理优化:传统的线程创建和…

vue2项目升级到vue3经历分享4

后端重构&#xff0c;如果接口做好抽象封装&#xff0c;只需要考虑jar之间的兼容性问题&#xff0c;jdk版本不变&#xff0c;基本不用做太大的调整&#xff0c;但是前端就不一样&#xff0c;除了vue框架本身&#xff0c;css的调整&#xff0c;改起来更是让人头疼。前面写了vue2…

8.2版本Web端移动开发调试强制跳转新移动框架

解决方案: Common.config文件中增加配置项 <add key="MobileLoginType" value="1" /> 如下图其他注意事项: 没有配置MobileLoginType属性 或 MobileLoginType = "" 或 MobileLoginType = 2 都会执行重定向 MobileLoginType = 3 系…

SQL 基础 | UNION 用法介绍

在SQL中&#xff0c;UNION操作符用于合并两个或多个SELECT语句的结果集&#xff0c;形成一个新的结果集。 使用UNION时&#xff0c;合并的结果集列数必须相同&#xff0c;并且列的数据类型也需要兼容。 默认情况下&#xff0c;UNION会去除重复的行&#xff0c;只保留唯一的行。…