SouthLeetCode-打卡24年01月第2周

SouthLeetCode-打卡24年01月第2周

// Date : 2024/01/08 ~ 2024/01/14

001.数组中第三大的数

(1) 题目描述

001#2023机试T1#北岸计划2024/01/08

给定一个nums[]数组,求出数组中第三大的数,注意数组中可能包含重复的元素,保证一定有第三大的数

(2) 题解代码

public class Question1 {static int thirdMax(int[] nums){int length = nums.length;if(length < 3) return -999;Arrays.sort(nums);int flag = 0;int index = 0;for(int i = nums.length-1 ; i > 0 ; i-- ){if (nums[i] != nums[i-1]){flag++;}if (flag < 3){index++;}}return nums[length-index-1];}public static void main(String[] args) {int nums1[] = new int[]{1,2,4,3,6,6};int res = thirdMax(nums1);System.out.println(res);int nums2[] = new int[]{3,2,1};int res2 = thirdMax(nums2);System.out.println(res2);}}

002.阶乘的取余

(1) 题目描述

002#2023机试T2#北岸计划2024/01/08

给定一个整数n,求 (1!+2!+...+n!) % 10000

(2) 题解代码

public class Question2 {static int factorial ( int n ) {int r = 1;for ( int i = 1; i <= n; i++ ) {r*=i;}return r;}static int sumOfFactorials(int n){int sum = 0;int factorial = 1;for(int i=1 ; i<=n ; i++){factorial *= i;sum = (sum%10000 + factorial%10000) % 10000;}return sum;}public static void main(String[] args) {System.out.println(sumOfFactorials(1));System.out.println(sumOfFactorials(2));System.out.println(sumOfFactorials(3));System.out.println(sumOfFactorials(10));}
}

003.有效的括号

(1) 题目描述

003#2023机试T3#北岸计划2024/01/09

给定一个字符串,字符串中只包含{}[]这四种字符,写一个程序判断字符串中是否包含有效的括号

(2) 题解代码

public class Question3 {static boolean isValidBrackets ( String s ){if(s.length()%2 == 0){Stack<Character> stack = new Stack<>();HashMap<Character,Character> hashmap = new HashMap<>();hashmap.put('[',']');hashmap.put('{','}');List<Character> list = new ArrayList<>();list.add('[');list.add('{');for(int i=0 ; i<s.length() ; i++){if (list.contains(s.charAt(i))){stack.push(hashmap.get(s.charAt(i)));} else if (stack.empty() || s.charAt(i) != stack.peek()) {return false;} else {stack.pop();}}return stack.empty();}else{return false;}}public static void main(String[] args) {System.out.println(isValidBrackets("{}")); // trueSystem.out.println(isValidBrackets("{[]}")); // trueSystem.out.println(isValidBrackets("{[}]")); // false}
}

004.二分查找

(1) 题目描述

004#LeetCode.27.#代码随想录0012024/01/10

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

(2) 题解代码

class Solution {public int search(int[] nums, int target) {int left = 0;int right = nums.length-1;int mid =  (left + right)  / 2;while(left <= right){mid =  (left + right)  / 2;int number = nums[mid];if(number > target){right = mid-1;}else if(number < target){left = mid+1;}else{return mid;}}return -1;}
}

005.反转字符串

(1) 题目描述

005#LeetCode.344.#代码随想录0022024/01/11

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。

(2) 题解代码

class Solution {public int search(int[] nums, int target) {int left = 0;int right = nums.length-1;int mid =  (left + right)  / 2;while(left <= right){mid =  (left + right)  / 2;int number = nums[mid];if(number > target){right = mid-1;}else if(number < target){left = mid+1;}else{return mid;}}return -1;}
}

006.数字替换

(1) 题目描述

006#KamaCoder.54.#代码随想录0032024/01/11

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。

例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。

对于输入字符串 “a5b”,函数应该将其转换为 “anumberb”

输入:一个字符串 s,s 仅包含小写字母和数字字符。

输出:打印一个新的字符串,其中每个数字字符都被替换为了number

样例输入:a1b2c3

样例输出:anumberbnumbercnumber

数据范围:1 <= s.length < 10000。

(2) 题解代码


007.有序数组的平方和

(1) 题目描述

007#LeetCode.977.#代码随想录0042024/01/12

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

(2) 题解代码

Version1.0

class Solution {public int[] sortedSquares(int[] nums){for(int i=0 ; i<nums.length; i++){nums[i] = nums[i]*nums[i];}Arrays.sort(nums);return nums;}
}

Version2.0

class Solution {public int[] sortedSquares(int[] nums){int length = nums.length;int left = 0;int right = length-1;int[] res = new int[length];int index = length-1;while(left <= right){if(nums[left] + nums[right] > 0){res[index] = nums[right]*nums[right];right--;}else{res[index] = nums[left]*nums[left];left++;}index--;}return res;}
}

Version3.0

class Solution {public int[] sortedSquares(int[] nums) {int length = nums.length;int left = 0;int right = length - 1;int[] res = new int[length];int index = length-1;while(left <= right){res[index] = nums[left]*nums[left] > nums[right]*nums[right] ? nums[left]*nums[left++] : nums[right]*nums[right--];index--;}return res;}
}

008.长度最小的子数组

(1) 题目描述

008#LeetCode.209.#代码随想录0052024/01/13

给定一个含有 n 个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。**

如果不存在符合条件的子数组,返回 0

(2) 题解代码

暴力解法(用例通过16/21)

class Solution {public int minSubArrayLen(int target, int[] nums) {int sum = 0;int res = 0;for(int len = 1; len < nums.length ; len++){for(int i=0 ; i+len <= nums.length ; i++){for(int k=0; k < len ; k++){sum += nums[i+k];}if(sum >= target){if(res == 0){res = len;}else{res = Math.min(res,len);}}sum = 0;}}return res;}
}

暴力解法(用例通过18/21:超时)

class Solution {public int minSubArrayLen(int target, int[] nums) {int sum = 0;int res = 0;//把循环条件加上等号即可for(int len = 1; len <= nums.length ; len++){for(int i=0 ; i+len <= nums.length ; i++){for(int k=0; k < len ; k++){sum += nums[i+k];}if(sum >= target){if(res == 0){res = len;}else{res = Math.min(res,len);}}sum = 0;}}return res;}
}

Version3.0 滑动窗口

class Solution {public int minSubArrayLen(int target, int[] nums) {int length = nums.length;int sum = 0, res = 0;int left = 0, right = 0;int maxSum = 0;for( ; right < length ; right++){allSum += nums[right];sum += nums[right];while(sum >= target){res = res != 0 ? Math.min(res,right-left+1) : right-left+1;sum -= nums[left++];}}if(allSum < target){ res = 0; }return res;}
}

009.第三大的数

(1) 题目描述

009#LeetCode.414.#北岸计划2024/01/14

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

(2) 题解代码

class Solution {public int thirdMax(int[] nums) {int length = nums.length;int flag = 1;Arrays.sort(nums);for(int i=length-2 ; i>=0 ; i--){if(nums[i] != nums[i+1]){flag++;}if(flag == 3){return nums[i];}}return nums[length-1];}
}

010.下一个排列

(1) 题目描述

010#2023机试T4#北岸计划2024/01/14

整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。

  • 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3][1,3,2][3,1,2][2,3,1]

整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。

  • 例如,arr = [1,2,3] 的下一个排列是 [1,3,2]
  • 类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]
  • arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。

给你一个整数数组 nums ,找出 nums 的下一个排列。

必须原地修改,只允许使用额外常数空间。

(2) 题解代码

// 未做完…

011.环形链表Ⅱ

(1) 题目描述

011#LeetCode.142.#北岸计划2024/01/14

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos-1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

(2) 题解代码

public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;boolean flag = false;while(fast != null){slow = slow.next;fast = fast.next;if(fast != null){fast = fast.next;}else{return null;}if(fast == slow){flag = true;break;}}if (flag) {fast = head;while (fast != slow) {fast = fast.next;slow = slow.next;}return slow;} else {return null;}}
}

012.相交链表

(1) 题目描述

012#LeetCode.160.#北岸计划2024/01/14

(2) 题解代码

public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode curA = headA;ListNode secA = headA;ListNode curB = headB;ListNode secB = headB;while(curA != null && curB != null){curA = curA.next;curB = curB.next;}if(curA == null){while(curB != null){curB = curB.next;secB = secB.next;}curA = headA;while(curA != secB){curA = curA.next;secB = secB.next;}return curA;}if(curB == null){while(curA != null){curA = curA.next;secA = secA.next;}curB = headB;while(curB != secA){curB = curB.next;secA = secA.next;}return curB;}return null;}
}

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

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

相关文章

【Python实战】Python多线程批量采集图片

前言 本文来介绍如何多线程采集图片&#xff0c;多线程效率更快&#xff0c;但是&#xff0c;我们单一IP请求过于频繁&#xff0c;可能会被反爬&#xff0c;被封IP&#xff0c;所以&#xff0c;我们就要用到IP代理池&#xff0c;这里&#xff0c;我给大家推荐一个&#xff0c;可…

5.10 动态优先级模式

动态优先级模式与静态优先级模式类似&#xff0c;但动态优先级模式会随着任务运行时条件的改变自动调整任务优先级。调整任务优先级的策略有很多种&#xff0c;最常见的是“最早截止期优先”(Earliest Deadline First)&#xff0c;即优先级最高的任务是离截止时间最近的任务。动…

11个技巧让你的Python性能起飞

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python 是一门非常强大且易于学习的编程语言&#xff0c;但在处理大规模数据或复杂任务时&#xff0c;可能会遇到性能瓶颈。为了让你的 Python 代码运行更快&#xff0c;本文将介绍一些提高 Python 性能的技巧和…

uniapp如何添加多个表单数组?

目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 四、小结 注意事项 总结模板&#xff1a; 一、实现思路 1.在 data 中定义一个数组&#xff0c;用于存储表单项的数据 2.在模板中使用 v-for 指令渲染表单项 3.在 methods 中…

低代码

腾讯云微搭低代码 WeDa _低代码开发平台_可视化开发平台-腾讯云 首页 - 钉钉宜搭 快速上手多维表格 爱速搭 - 企业应用智能设计平台 | 低代码平台 - 百度智能云 Astro轻应用 Astro Zero_低代码开发平台_软件开发工具_应用开发工具_华为云 低代码是一种软件开发方法&#x…

如何快速搭建个人博客

说明&#xff1a;本文介绍如何使用Halo框架快速搭建个人博客&#xff0c;我用的是阿里云的云服务器&#xff0c;操作系统是CentOS 7.0。 安装Docker&DockerCompose &#xff08;1&#xff09;Docker安装 Docker的安装参考&#xff0c;Docker安装&卸载&#xff1b; …

springboot修改orm事务

在Spring Boot结合MyBatis的应用中&#xff0c;如果你需要在服务层为某个特定方法单独修改MySQL的提交事务行为&#xff0c;你可以通过使用Transactional注解并指定相关的属性来实现。这个注解不仅允许你控制事务的开启和关闭&#xff0c;还可以设置事务的一些特定属性&#xf…

AI算力专题:算力系列之四-各省算力规划建设梳理-绿色低碳高质量发展-部署算力建设AI产业研究

今天分享的是AI算力系列深度研究报告&#xff1a;《AI算力专题&#xff1a;算力系列之四-各省算力规划建设梳理-绿色低碳高质量发展-部署算力建设AI产业研究》。 &#xff08;报告出品方&#xff1a;中泰证券&#xff09; 报告共计&#xff1a;40页 数据中心能耗情况 随着越…

【Docker】linux、nginx、容器镜像三者基本概念

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Docker容器》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

PCB设计10条重要布线原则(学习笔记)

文章目录 一、连线精简二、避免走直角线三、差分走线四、蛇形走线五、圆滑走线六、数字与模拟分开七、3W原则八、20H原则九、铜箔承载电流十、过孔承载电流 一、连线精简 尽量用最短的路径去布线 1、可以省资源 2、信号差损少 3、线能不拐弯就不拐弯 4、能不换层就不换层 二…

SQL中实现行列转换

目录 方法一&#xff1a;sum case when 方法二&#xff1a;sum if 方法三&#xff1a;pivot 现在有一张表class_gender&#xff0c;内容如下&#xff1a; classgender一年级女一年级女一年级男一年级男二年级女二年级女二年级男 现在我们要根据上表&#xff0c;统计得到下…

初识attention

近年来&#xff0c;attention机制在机器视觉和机器翻译领域受到了广泛的关注&#xff0c;有很多文章都是融合attention来提高性能。attention受启发于人类的视觉系统&#xff0c;最先应用于序列化的机器翻译(NLP)后又推广到计算机视觉中&#xff0c;本篇文章就来简单学习一下at…

JS基础 - 遍历对象方法(6种)

初始值&#xff1a; var obj {a: 1,b: 2,c: 3,d: 4,e: 5,}; 第一种&#xff1a;for in for (let key in obj) {console.log(key ":" obj[key]);} 第二种&#xff1a;Object.keys 获取key Object.keys(obj).forEach((key) > {console.log(key ":" …

AI绘画:PhotoMaker Win11本地安装记录!

昨天介绍一个叫PhotoMaker的AI绘画开源项目。挺不错的&#xff01; 通过这个项目可以快速制作特定人脸的AI绘画作品&#xff0c;相比传统的技术效果会好很多&#xff0c;效率也高很多。 今天趁热打铁&#xff0c;本地电脑装装看&#xff0c;并且记录&#xff0c;分享一下&#…

js padEnd方法介绍笔记

padEnd() 是 JavaScript 字符串的方法之一&#xff0c;它用于在当前字符串的末尾添加指定数量的字符&#xff0c;直到字符串达到指定的长度。 padEnd() 方法接受两个参数&#xff1a; 目标长度和要添加的填充字符。 如果当前字符串的长度已经等于或超过目标长度&#xff0c;则不…

程序员怎么写简历_写简历软件

你们在制作简历时&#xff0c;是不是基本只关注两件事&#xff1a;简历模板&#xff0c;还有基本信息的填写。 当你再次坐下来更新你的简历时&#xff0c;可能会发现自己不自觉地选择了那个“看起来最好看的模板”&#xff0c;填写基本信息&#xff0c;却没有深入思考如何使简历…

vue预览pdf文件的几种方法

文章目录 vue预览pdf集中方法方法一&#xff1a;方法二&#xff1a;展示效果&#xff1a;需要包依赖&#xff1a;代码&#xff1a; 方法三&#xff1a;展示效果&#xff1a;需要包依赖&#xff1a;代码&#xff1a;自己调参数&#xff0c;选择符合自己的 vue预览pdf集中方法 我…

第 9 章:理解C++内存模型

本章是继[第8章]讨论的延续&#xff0c;我们在那里讨论了一些多进程和多线程技术&#xff1b;本章将增强它们的使用。我们将引导你了解各种技术&#xff0c;同时聚焦于本章的主要内容——C内存模型。但为了讨论这一点&#xff0c;你首先将简要检视通过智能指针和可选对象实现的…

ZK鉴权设计以及相关探讨

文章目录 1. zk的鉴权设计2. zk鉴权应用范围3. zk鉴权的常用方法4. 推荐配置5. 参考文档 鉴权&#xff0c;分别由鉴和权组成 鉴&#xff1a; 表示身份认证&#xff0c;认证相关用户是否存在以及相关的用户名和密码是否一致权&#xff1a; 完成身份的鉴后&#xff0c;还需要判断…

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统&#xff0c;具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…