Java练习 day4

一、存在重复元素 II

1、题目链接

点击跳转到题目位置

2、代码

class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Map<Integer, Integer> mp = new HashMap<Integer, Integer>();int n = nums.length;for(int i = 0; i < n; ++i){if(mp.containsKey(nums[i]) && i - mp.get(nums[i]) <= k){return true;}mp.put(nums[i], i);}return false;}
}

3、知识点

(1) java中利用哈希表来解决问题。

二、用队列实现栈

1、题目链接

点击跳转到题目位置

2、代码

class MyStack {Queue<Integer> queue;public MyStack() {queue = new LinkedList<Integer>();}public void push(int x) {int n = queue.size();queue.offer(x);for(int i = 0; i < n; ++i){queue.offer(queue.poll());}}public int pop() {return queue.poll();}public int top() {return queue.peek();}public boolean empty() {return queue.isEmpty();}
}/*** Your MyStack object will be instantiated and called as such:* MyStack obj = new MyStack();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.top();* boolean param_4 = obj.empty();*/

3、知识点

(1) 本题目用java中自带的链式队列来解决问题。
(2) poll()用来返回队首元素并删除,offer()表示插入元素到队尾,isEmpty()用来判断队列元素是否为空,peek()用来返回队首元素。

三、翻转二叉树

1、题目链接

点击跳转到题目位置

2、代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode invertTree(TreeNode root) {if(root == null){return null;}TreeNode temp = new TreeNode() ;invertTree(root.left);invertTree(root.right);temp = root.left;root.left = root.right;root.right = temp;return root;}
}

3、知识点

(1) 树中问题,用递归解决即可。

四、汇总区间

1、题目链接

点击跳转到题目位置

2、代码、

class Solution {public List<String> summaryRanges(int[] nums) {List<String> res = new ArrayList<String>();int left = 0;int right = 1;int n = nums.length;if(n == 0){return res;}while(right < n){if(nums[right] == nums[right - 1] + 1){++right;continue;} else{StringBuffer temp = new StringBuffer(Integer.toString(nums[left])); if(right > left + 1){temp.append("->");temp.append(Integer.toString(nums[right - 1]));}res.add(temp.toString());left = right;}++right; } StringBuffer temp = new StringBuffer(Integer.toString(nums[left])); if(right > left + 1){temp.append("->");temp.append(Integer.toString(nums[right - 1]));}res.add(temp.toString());return res;}
}

3、知识点

(1) java中的字符串数组的操作。

五、2 的幂

1、题目链接

点击跳转到题目位置

2、代码

class Solution {
public:bool isPowerOfTwo(int n) {return n > 0 && (n & (n-1)) == 0;}
};

3、知识点

(1) 2的幂的相关知识,二进制只含有一个1.

六、用栈实现队列

1、题目链接

点击跳转到题目位置

2、代码

class MyQueue {Deque<Integer> inStack;Deque<Integer> outStack;public MyQueue() {inStack = new ArrayDeque<Integer>();outStack = new ArrayDeque<Integer>();}public void push(int x) {inStack.push(x);}public int pop() {if (outStack.isEmpty()) {in2out();}return outStack.pop();}public int peek() {if (outStack.isEmpty()) {in2out();}return outStack.peek();}public boolean empty() {return inStack.isEmpty() && outStack.isEmpty();}private void in2out() {while (!inStack.isEmpty()) {outStack.push(inStack.pop());}}
}

3、知识点

(1) 两个栈来解决。

七、回文链表

1、题目链接

点击跳转到题目位置

2、代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public boolean isPalindrome(ListNode head) {ArrayList<Integer> res = new ArrayList<Integer>();while(head != null){res.add(head.val);head = head.next;}int left = 0;int right = res.size() - 1;while(left <= right){if(res.get(left) != res.get(right)){return false;}left++;right--;}return true;}
}

3、知识点

(1) 运用到一些关于java中数组的知识。

八、有效的字母异位词

1、题目链接

点击跳转到题目位置

2、代码

class Solution {public boolean isAnagram(String s, String t) {Map<Character, Integer> mp = new HashMap<Character, Integer>();int n = s.length();int m = t.length();if(m != n){return false;}for(int i = 0; i < n; ++i){char ch = s.charAt(i);mp.put(ch, mp.getOrDefault(ch, 0) + 1);}for(int i = 0; i < m; ++i){char ch = t.charAt(i);mp.put(ch, mp.getOrDefault(ch, 0) - 1);if(mp.get(ch) < 0){return false;}}return true;}
}

3、知识点

(1) Java中关于哈希表的知识。

九、二叉树的所有路径

1、题目链接

点击跳转到题目位置

2、代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public void Find(TreeNode root, String ret, List<String> res){if(root != null){StringBuffer s = new StringBuffer(ret);s.append(Integer.toString(root.val));if(root.left == null && root.right == null){res.add(s.toString());} else{s.append("->");Find(root.left, s.toString(), res);Find(root.right, s.toString(), res);}  }}public List<String> binaryTreePaths(TreeNode root) {List<String> res = new ArrayList<String>();Find(root, "", res);return res;}
}

十、各位相加

1、题目链接

点击跳转到题目位置

2、代码

class Solution {public int addDigits(int num) {int num1 = 0;while(num > 0){num1 += (num % 10);num /= 10;}if(num1 >= 0 && num1 < 10){return num1;}return addDigits(num1);}
}

3、知识点

(1) 使用递归,每次个位相加得到结果判断是否已经是个位数,如果是就返回结果。

十一、丑数

1、题目链接

点击跳转到题目位置

2、代码

class Solution {public boolean isUgly(int n) {if(n <= 0){return false;}int[] factor = {2, 3, 5};for(int i = 0; i < 3; ++i){int factors = factor[i];while(n % factors == 0){n /= factors;}} return n == 1;}
}

3、知识点

(1) 模拟即可。

十二、丢失的数字

1、题目链接

点击跳转到题目位置

2、代码

class Solution {public int missingNumber(int[] nums) {Arrays.sort(nums);int n = nums.length;for(int i = 0; i < n; ++i){if(nums[i] != i){return i;}}return n;}
}

3、知识点

(1) Java中的排序。

十三、第一个错误的版本

1、题目链接

点击跳转到题目位置

2、代码

/* The isBadVersion API is defined in the parent class VersionControl.boolean isBadVersion(int version); */public class Solution extends VersionControl {public int firstBadVersion(int n) {int ans = -1;int left = 1;int right = n;while(left <= right){int mid = ((right - left) >> 1) + left;if(isBadVersion(mid) == true){ans = mid;right = mid - 1;} else{left = mid + 1;}}return ans;}
}

3、知识点

(1) 二分搜索。

十四、移动零

1、题目链接

点击跳转到题目位置

2、代码

class Solution {public void moveZeroes(int[] nums) {int left = 0;int n = nums.length;int right = 1;while(left < n){while(left < n && nums[left] != 0){++left;}if(left == n){return ;} right = left + 1;while(right < n && nums[right] == 0){++right;}if(right == n){return ;}nums[left] = nums[right];nums[right] = 0;++left;}return ;}
}

3、知识点

(1) 双指针。

十五、单词规律

1、题目链接

点击跳转到题目位置

2、代码

class Solution {public boolean wordPattern(String pattern, String str) {Map<String, Character> str2ch = new HashMap<String, Character>();Map<Character, String> ch2str = new HashMap<Character, String>();int m = str.length();int i = 0;for (int p = 0; p < pattern.length(); ++p) {char ch = pattern.charAt(p);if (i >= m) {return false;}int j = i;while (j < m && str.charAt(j) != ' ') {j++;}String tmp = str.substring(i, j);if (str2ch.containsKey(tmp) && str2ch.get(tmp) != ch) {return false;}if (ch2str.containsKey(ch) && !tmp.equals(ch2str.get(ch))) {return false;}str2ch.put(tmp, ch);ch2str.put(ch, tmp);i = j + 1;}return i >= m;}
}

3、知识点

(1) 哈希表。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于阴阳对优化的BP神经网络(分类应用) - 附代码

基于阴阳对优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于阴阳对优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.阴阳对优化BP神经网络3.1 BP神经网络参数设置3.2 阴阳对算法应用 4.测试结果&#x…

数据结构与算法--算法

这里写目录标题 线性表顺序表链表插入删除算法 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 线性表 顺序表 链表 插入删除算法 步骤 1.通过循环到达指定位置的前一个位置 2.新建…

VS的调式技巧你真的掌握了吗?

目录 什么是bug? 调式是什么&#xff1f;有多重要&#xff1f; 调试是什么&#xff1f; 调试的基本步骤 debug和release的介绍 windows环境调试介绍 1.调试环境的准备 2.学会快捷键 F11 VS F10 F9 & F5 3.调试时查看程序当前信息 查看临时变量的值 查看内存信…

【物联网】STM32的中断机制不清楚?看这篇文章就足够了

在嵌入式系统中&#xff0c;中断是一种重要的机制&#xff0c;用于处理来自外部设备的异步事件。STM32系列微控制器提供了强大的中断控制器&#xff0c;可以方便地处理各种外部中断和内部中断。本文将详细介绍STM32中断的结构和使用方法。 文章目录 1. 什么叫中断2. 中断优先级…

<学习笔记>从零开始自学Python-之-常用库篇(十二)Matplotlib

Matplotlib 是Python中类似 MATLAB的绘图工具&#xff0c;Matplotlib是Python中最常用的可视化工具之一&#xff0c;可以非常方便地创建2D图表和一些基本的3D图表&#xff0c;可根据数据集&#xff08;DataFrame&#xff0c;Series&#xff09;自行定义x,y轴&#xff0c;绘制图…

IntelliJ IDEA配置Cplex12.6.3详细步骤

Cplex12.6.3版IntelliJ IDEA配置详细步骤 一、Cplex12.6.3版下载地址二、Cplex安装步骤三、IDEA配置CPLEX3.1 添加CPLEX安装目录的cplex.jar包到项目文件中3.2 将CPLEX的x64_win64文件夹添加到IDEA的VM options中 四、检查IDEA中Cplex是否安装成功卸载Cplex 一、Cplex12.6.3版下…

Docker通过Dockerfile创建Redis、Nginx--详细过程

创建Nginx镜像 我们先创建一个目录&#xff0c;在目录里创建Dockerfile [rootdocker-3 ~]# mkdir mynginx [rootdocker-3 ~]# cd mynginx [rootdocker-3 ~]# vim Dockerfile Dockerfile的内容 FROM daocloud.io/library/centos:7 RUN buildDepsreadline-devel pcre-devel o…

代码:对鱼眼相机图像进行去畸变处理

图像投影模型&#xff1a;针孔[fx, fy, cx, cy] 图像畸变模型&#xff1a;切向径向畸变[k1, k2, p1, p2] 说明&#xff1a;用于备忘 第一部分是常规的去畸变操作&#xff0c;在已知内参的情况下对鱼眼相机进行去畸变&#xff0c;这里使用的是remap映射在对图像去畸变后&#x…

竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

Windows下启动freeRDP并自适应远端桌面大小

几个二进制文件 xfreerdp # Linux下的&#xff0c;an X11 Remote Desktop Protocol (RDP) client which is part of the FreeRDP project wfreerdp.exe # Windows下的&#xff0c;freerdp2.0 主程序&#xff0c;freerdp3.0将废弃 sdl-freerdp.exe # Windows下的&…

appscan的两种手动探索扫描方式

文章目录 一、使用火狐FoxyProxy浏览器代理探索二、使用appscan内置浏览器探索 一、使用火狐FoxyProxy浏览器代理探索 首先火狐浏览器需安装FoxyProxy 先在扩展和主题里搜FoxyProxy 选FoxyProxy Standard,然后添加到浏览器就行 添加后浏览器右上角会有这个插件 打开apps…

【算法学习】-【双指针】-【快乐数】

LeetCode原题链接&#xff1a;202. 快乐数 下面是题目描述&#xff1a; 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。 如果…

cad图纸如何防止盗图(一个的制造设计型企业如何保护设计图纸文件)

在现代企业中&#xff0c;设计图纸是公司的重要知识产权&#xff0c;关系到公司的核心竞争力。然而&#xff0c;随着技术的发展&#xff0c;员工获取和传播设计图纸的途径越来越多样化&#xff0c;如何有效地防止员工复制设计图纸成为了企业管理的一大挑战。本文将从技术、管理…

【动手学深度学习-Pytorch版】Transformer代码总结

本文是纯纯的撸代码讲解&#xff0c;没有任何Transformer的基础内容~ 是从0榨干Transformer代码系列&#xff0c;借用的是李沐老师上课时讲解的代码。 本文是根据每个模块的实现过程来进行讲解的。如果您想获取关于Transformer具体的实现细节&#xff08;不含代码&#xff09;可…

MySQL的复合查询

文章目录 1. 多表查询2. 自连接3. 子查询3.1 单行子查询3.2 多行单列子查询3.3 单行多列子查询3.4 在from子句中使用子查询 4. 合并查询4.1 union all4.2 union 5. 内连接6. 外连接6.1 左外连接6.2 右外连接 1. 多表查询 前面我们讲解的mysql表的查询都是对一张表进行查询&…

哨兵(Sentinel-1、2)数据下载

哨兵&#xff08;Sentinel-1、2&#xff09;数据下载 一、登陆欧空局网站 二、检索 先下载2号为光学数据 分为S2A和S2B&#xff0c;产品种类有1C和2A&#xff0c;区别就是2A是做好大气校正的影像&#xff0c;当然数量也会少一些&#xff0c;云量检索条件中记得要按格式&#x…

Mind Map:大语言模型中的知识图谱提示激发思维图10.1+10.2

知识图谱提示激发思维图 摘要介绍相关工作方法第一步&#xff1a;证据图挖掘第二步&#xff1a;证据图聚合第三步&#xff1a;LLM Mind Map推理 实验实验设置医学问答长对话问题使用KG的部分知识生成深入分析 总结 摘要 LLM通常在吸收新知识的能力、generation of hallucinati…

一键AI高清换脸——基于InsightFace、CodeFormer实现高清换脸与验证换脸后效果能否通过人脸比对、人脸识别算法

前言 1、项目简介 AI换脸是指利用基于深度学习和计算机视觉来替换或合成图像或视频中的人脸。可以将一个人的脸替换为另一个人的脸,或者将一个人的表情合成到另一个人的照片或视频中。算法常常被用在娱乐目上,例如在社交媒体上创建有趣的照片或视频,也有用于电影制作、特效…

Qt model/view 理解01

在 Qt 中对数据处理主要有两种方式&#xff1a;1&#xff09;直接对包含数据的的数据项 item 进行操作&#xff0c;这种方法简单、易操作&#xff0c;现实方式单一的缺点&#xff0c;特别是对于大数据或在不同位置重复出现的数据必须依次对其进行操作&#xff0c;如果现实方式改…

44 二叉搜索树中第K个小的元素

二叉搜索树中第K个小的元素 题解1 中序遍历题解2 AVL&#xff08;手撕平衡二叉树&#xff1a;谢谢力扣官方&#xff09; 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xf…