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

leetcode面试算法题

1.数组/字符串

1.1合并两个有序数组

class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int p1 = 0;//遍历数组1int p2 = 0;//遍历数组2int[] nums3 = new int[m + n];int p = 0;while (p1 < m && p2 < n) {//当数组1、2都没遍历完nums3[p++] = nums1[p1] <= nums2[p2] ? nums1[p1++] : nums2[p2++];}while (p1 < m) {nums3[p++] = nums1[p1++];}while (p2 < n) {nums3[p++] = nums2[p2++];}for (int i = 0; i < m + n; i++) {nums1[i] = nums3[i];}}
}

1.2移除元素

class Solution {public int removeElement(int[] nums, int val) {if(nums.length<1) return 0;int l = 0;int r = nums.length - 1;int res = 0;while (l < r) {if (nums[l] == val) {//换到最末尾的元素一定是和val相同,但换过来的元素还没比较,因此不能直接l--swap(l, r--, nums);} else {res++;//数组有效长度+1l++;}}if (nums[l] != val) {res++;}return res;}public void swap(int a, int b, int[] nums) {int temp = nums[a];nums[a] = nums[b];nums[b] = temp;}
}

2.哈希表

2.1有效的字母异位词

class Solution {public boolean isAnagram(String s, String t) {if (s.length() != t.length()) return false;int[] num = new int[26];for (int i = 0; i < s.length();i++){num[s.charAt(i)-'a']++;num[t.charAt(i)-'a']--;}for (int i : num) {if (i!=0){return false;}}return true;}
}

2.2快乐数

        解释:由于我们知道int的最大值为2147483647,而在这个数字之内的最大的next(next 为各位数字的平方和)。是1999_999_999 (1999_999_999 = 1*1 + 9*9*9(一共有9位数位9))。

        根据以上表格,我们可以发现,即使数字很大,next 范围也会跌下来,很快陷入 [1,243] 这个范围内,这是因为即使是1999_999_999,在经过一次运算以后,也会变成730,而730在[100,999]这个范围之内,说明之后进行快乐数运算,一定会在[1,243]这个范围之内!

        所以在有限次循环之内,就会出现相同的值。接下来面临循环或者达到 1 退出。这是典型的环形链表问题,我们可以通过快慢指针来解决。

class Solution {public boolean isHappy(int n) {int m = getNext(getNext(n));//快指针,每次进行两次运算while (m != n) {m = getNext(getNext(m));n = getNext(n);}if (m == 1) {//比较最后相遇的值return true;}return false;}public int getNext(int n) {//获取当前n的下一个数int sum = 0;while (n > 0) {int m = n % 10;n = n / 10;sum += m * m;}return sum;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java程序员接单分享
  • Redis远程字典服务器(1)—— 初识Redis
  • SSH协议管理多主机(SSH协议的两种用法、生产环境用户初始化、结果返回值处理)
  • 人工智能算法工程师(高级)课程11-自然语言处理之NLP的语言模型-seq2seq模型,seq+注意力与代码详解
  • 【数据结构】链表篇
  • 深入解析:Amazon Bedrock 上 Claude 3 Haiku 的微调测试报告
  • 基于STM32的智能宠物喂食器
  • MySQL的索引事务和JDBC编程
  • QT(2.0)
  • Datawhale AI 夏令营(2024第三期)AI+逻辑推理方向 模型微调学习笔记
  • MySQL——数据表的基本操作(四)删除数据表
  • 避免死锁的资源分配算法——银行家算法
  • C语言——扫雷游戏
  • Python基础—any(),all()函数你会用吗?
  • .net core + vue 搭建前后端分离的框架
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Git初体验
  • Java Agent 学习笔记
  • JAVA 学习IO流
  • JavaScript设计模式之工厂模式
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Swoft 源码剖析 - 代码自动更新机制
  • VUE es6技巧写法(持续更新中~~~)
  • 如何实现 font-size 的响应式
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 写代码的正确姿势
  • 新版博客前端前瞻
  • 原生js练习题---第五课
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 06-01 点餐小程序前台界面搭建
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​比特币大跌的 2 个原因
  • ​补​充​经​纬​恒​润​一​面​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # Maven错误Error executing Maven
  • #APPINVENTOR学习记录
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (42)STM32——LCD显示屏实验笔记
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .bat文件调用java类的main方法
  • .equals()到底是什么意思?
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况