当前位置:网站首页>剑指 Offer(第 2 版)7/4 1-4
剑指 Offer(第 2 版)7/4 1-4
2022-08-10 05:36:00 【吉良吉影__.】
1.剑指 Offer 03. 数组中重复的数字 简单
解法一:hash
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int x:nums) {
if (set.contains(x))return x;
set.add(x);
}
return -1;
}
}
解法二:排序
此解法不适用,只有基数排序没有超时
2.剑指 Offer 04. 二维数组中的查找 中等
方法一:对数组中的每一维进行二分查找
时间复杂度O(NlogN)
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
for (int i = 0; i < matrix.length; i++) {
if (search(matrix[i],target))return true;
}
return false;
}
public boolean search(int[] arr,int tar){
int l = 0;
int r = arr.length - 1;
while (l <= r){
int mid = (l + r) / 2;
if (arr[mid] > tar){
r = mid - 1;
}else if (arr[mid] < tar){
l = mid + 1;
}else {
return true;
}
}
return false;
}
}
方法二:线性查找
根据此题二维数组的特性
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
int n = matrix.length;
if (n == 0)return false;
int m = matrix[0].length;
if (m == 0)return false;
int hor = 0;
int ver = m - 1;
while (hor < n && ver >= 0){
int num = matrix[hor][ver];
if (num == target){
return true;
}if (num < target){
//num < target 则肯定可以在下方查找
hor++;
}if (num > target){
//num > target 则在左侧查找
ver--;
}
}
return false;
}
}
3.剑指 Offer 05. 替换空格 简单
class Solution {
public String replaceSpace(String s) {
StringBuilder res = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' '){
//是空格就替换
res.append("%20");
}else {
res.append(s.charAt(i));
}
}
return res.toString();
}
}
4.剑指 Offer 07. 重建二叉树 中等
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
return build(preorder,0,preorder.length - 1,inorder,0,inorder.length - 1);
}
public TreeNode build(int[] pre,int l,int r,int[] ino,int l2,int r2){
if (l > r)return null;
TreeNode root = new TreeNode(pre[l]);
if (l == r)return root;
int rootIdx = 0;//找到根节点在中序数组中的位置
for (int i = l2; i <= r2; i++) {
if (pre[l] == ino[i])
rootIdx = i;
}
root.left = build(pre,l + 1,l + (rootIdx - l2),
ino,l2,rootIdx - 1);
root.right = build(pre,l + (rootIdx - l2) + 1,r,
ino,rootIdx + 1,r2);
return root;
}
}
边栏推荐
- 通过adb devices命令在控制台显示企业级PicoNeo3设备号
- LeetCode Interview Question 17.14 Minimum k Number (Moderate)
- 手机端应用类型
- LeetCode refers to offer 10-I. Fibonacci sequence (simple)
- 解析树字符串并输出中序遍历
- STM32F407ZG 看门狗 IWDG & WWDG
- 以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断
- PyTorch之CV
- .Net Core imports tens of millions of data to Mysql
- Exploratory Data Analysis EDA
猜你喜欢
随机推荐
在Unity中让物体围绕自身的x、y、z轴进行旋转(亲测有效)
【从零设计 LaTex 模板】1. 一些基础知识
在Unity中判断游戏物体是否在游戏屏幕范围之内
Test of the opposite sex what you look like?
LeetCode 1720. Decoding XORed Arrays (Simple)
PyTorch之CV
二维卷积定理的验证(下,cv2.filter2D())
ASP.NET连接SQL Server的步骤
样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)
mysql分组排序并取各分组前几个数据
Deep learning TensorFlow entry environment configuration
过大数组导致爆栈的解决方法记录(堆栈)
Convolutional Neural Network (CNN) for mnist handwritten digit recognition
探究乱码问题的本源:GBK,UTF8,UTF16,UTF8BOM,ASN1之间的关联
酸回收工艺原理
【简易笔记】PyTorch官方教程简易笔记 EP1
除砷树脂吸附原理
Notes for Netual Network
剑指 Offer(第 2 版)7/7 14-17
离散数学的学习记录









