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.mzph.cn/news/95011.shtml

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

相关文章

C#WPF框架MvvMLight应用实例

本文实例演示C#WPF框架MvvMLight应用实例。 目录 一、MVVM概述 二、MVVMLight概述 三、使用MVMLight框架 一、MVVM概述 MVVM概述MVVM是Model-View-ViewModel的简写,主要目的是为了解耦视图(View)和模型(Model)。

redis的持久化消息队列

Redis Stream Redis Stream 是 Redis 5.0 版本新增加的数据结构。 Redis Stream 主要用于消息队列&#xff08;MQ&#xff0c;Message Queue&#xff09;&#xff0c;Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能&#xff0c;但它有个缺点就是消息无法…

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

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

Python基础之生成器

&#xff08;一&#xff09;什么是生成器 在python中&#xff0c;想要了解什么是生成器(generator)&#xff0c;首先就需要了解什么是yield关键字。yield表达式只能函数内部或者lambda函数中使用&#xff0c;使用了yield表达式的函数即为生成器函数&#xff0c;而生成器函数返…

全屋灯具选购指南,如何选择合适的灯具。福州中宅装饰,福州装修

灯具装修指南 灯具就像我们家里的星星&#xff0c;在黑暗中带给我们明亮&#xff0c;可是灯具如果选择的不好&#xff0c;这个效果不仅体现不出来&#xff0c;还会让人觉得烦躁。 灯具到底该怎么选呢&#xff1f;装修灯具有哪些注意事项呢&#xff1f;给大家做了一个总结&#…

链式法则(Chain Rule)

定义 链式法则&#xff08;Chain Rule&#xff09;是概率论和统计学中的一个基本原理&#xff0c;用于计算联合概率分布或条件概率分布的乘积。它可以用于分解一个复杂的概率分布为多个较简单的条件概率分布的乘积&#xff0c;从而简化概率分析问题。 链式法则有两种常见的形…

Map声明、元素访问及遍历、⼯⼚模式、实现 Set - GO语言从入门到实战

Map声明、元素访问及遍历 - GO语言从入门到实战 Map 声明的方式 m := map[string]int{"one": 1, "two": 2, "three": 3} //m初始化时就已经设置了3个键值对,所以它的初始长度len(m)是3。m1 := map[string]int{} //m1被初始化为一个空的m…

C++设计模式-抽象工厂(Abstract Factory)

目录 C设计模式-抽象工厂&#xff08;Abstract Factory&#xff09; 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-抽象工厂&#xff08;Abstract Factory&#xff09; 一、意图 提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们…

笔试编程ACM模式JS(V8)、JS(Node)框架、输入输出初始化处理、常用方法、技巧

目录 考试注意事项 先审完题意&#xff0c;再动手 在本地编辑器&#xff08;有提示&#xff09; 简单题515min 通过率0%&#xff0c;有额外log 常见输入处理 str-> num arr&#xff1a;line.split( ).map(val>Number(val)) 初始化数组 new Array(length).fill(v…

国庆中秋特辑(七)Java软件工程师常见20道编程面试题

以下是中高级Java软件工程师常见编程面试题&#xff0c;共有20道。 如何判断一个数组是否为有序数组&#xff1f; 答案&#xff1a;可以通过一次遍历&#xff0c;比较相邻元素的大小。如果发现相邻元素的大小顺序不对&#xff0c;则数组不是有序数组。 public boolean isSort…

Windows下Tensorflow docker python开发环境搭建

前置条件 windows10 更新到较新的版本&#xff0c;硬件支持Hyper-V。 参考&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl/install 启用WSL 在Powershell中输入如下指令&#xff1a; dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsys…

01-工具篇-windows与linux文件共享

一般来说绝大部分PC上装的系统均是windows&#xff0c;为了开发linux程序&#xff0c;会在PC上安装一个Vmware的虚拟机&#xff0c;在虚拟机上安装ubuntu18.04&#xff0c;由于windows上的代码查看软件、浏览器&#xff0c;通信软件更全&#xff0c;我们想只用ubuntu进行编译&a…

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

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

LeetCode 251:展开二维向量

题目 Implement an iterator to flatten a 2d vector. Example: [1,2,3,4,5,6] [1,2,3,4,5,6] Follow up: As an added challenge, try to code it using only iterators in C++ or iterators in Java. 题解: 用两个index 分别记录list 的 index 和当前 list的element index. …

【Linux基础】Linux发展史

&#x1f449;系列专栏&#xff1a;【Linux基础】 &#x1f648;个人主页&#xff1a;sunny-ll 一、前言 本篇主要介绍Linux的发展历史&#xff0c;这里并不需要我们掌握&#xff0c;但是作为一个合格的Linux学习者与操作者&#xff0c;这些东西是需要了解的&#xff0c;而且…

深入理解浏览器渲染原理

文章目录 浏览器是如何渲染页面的渲染流程解析HTML&#xff08;构建DOM树&#xff09;解析过程中遇到JS代码 样式计算1. 解析CSS代码2. 转换样式表中的属性值&#xff0c;使其标准化3. 计算DOM树中每个节点的具体样式CSS继承规则CSS层叠规则 布局分层分层update layer tree 绘制…

WebGL 响应上下文丢失解决方案

目录 响应上下文丢失 如何响应上下文丢失 上下文事件 示例程序&#xff08;RotatingTriangle_contextLost.js&#xff09; 响应上下文丢失 WebGL使用了计算机的图形硬件&#xff0c;而这部分资源是被操作系统管理&#xff0c;由包括浏览器在内的多个应用程序共享。在某些特…

【Java-LangChain:使用 ChatGPT API 搭建系统-5】处理输入-思维链推理

第五章&#xff0c;处理输入-思维链推理 在本章中&#xff0c;我们将专注于处理输入&#xff0c;即通过一系列步骤生成有用地输出。 有时&#xff0c;模型在回答特定问题之前需要进行详细地推理。如果您参加过我们之前的课程&#xff0c;您将看到许多这样的例子。有时&#xf…

逐步解决Could not find artifact com:ojdbc8:jar:12

Could not find artifact com:ojdbc8:jar:12 in central (https://repo.maven.apache.org/maven2) 原因&#xff1a; ojdbc8:jar:12 属于Oracle 数据库链接的一个程序集&#xff0c;缺失的话很有可能会影响数据库链接&#xff0c;蝴蝶效应产生不可预测的BUG&#xff01;但是版…

OpenGLES:绘制一个混色旋转的3D立方体

效果展示 混色旋转的3D立方体 一.概述 之前关于OpenGLES实战开发的博文&#xff0c;不论是实现相机滤镜还是绘制图形&#xff0c;都是在2D纬度 这篇博文开始&#xff0c;将会使用OpenGLES进入3D世界 本篇博文会实现一个颜色渐变、旋转的3D立方体 动态3D图形的绘制&#xf…