找出数组中重复的数字。

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

示例 1:

输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3

思路:一个set记录即可。

class Solution {public int findRepeatNumber(int[] nums) {Set<Integer> set = new HashSet<Integer>();for (int num : nums) {if (!set.add(num)) {return num;}}return -1;}
}

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

示例:

现有矩阵 matrix 如下:

[
  [1,   4,  7, 11, 15],
  [2,   5,  8, 12, 19],
  [3,   6,  9, 16, 22],
  [10, 13, 14, 17, 24],
  [18, 21, 23, 26, 30]
]
给定 target = 5,返回 true。

给定 target = 20,返回 false。

限制:

0 <= n <= 1000

0 <= m <= 1000

思路:从左下角或右上角查,每次可以排除一行或一列。

class Solution {public boolean findNumberIn2DArray(int[][] matrix, int target) {if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {return false;}int len = matrix.length;int row = 0, column = matrix[0].length - 1;while (row < len && column >= 0) {int num = matrix[row][column];if (num == target) {return true;} else if (num > target) {column--;} else {row++;}}return false;}
}

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1:

输入:s = "We are happy."
输出:"We%20are%20happy."

思路:从后往前填,未填的数不会被覆盖,每个字母只需赋值一次。(否则从前往后替换要不断地移动后面的字符)

class Solution {public String replaceSpace(String s) {int length = s.length();char[] array = new char[length * 3];int size = 0;for (int i = 0; i < length; i++) {char c = s.charAt(i);if (c == ' ') {array[size++] = '%';array[size++] = '2';array[size++] = '0';} else {array[size++] = c;}}String newStr = new String(array, 0, size);return newStr;}
}

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

限制:

0 <= 链表长度 <= 10000

思路:放栈里倒出来即可。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/class Solution {public int[] reversePrint(ListNode head) {Stack<ListNode> stack = new Stack<ListNode>();while (head != null) {stack.push(head);head = head.next;}int size = stack.size();int[] arr = new int[size];for (int i = 0; i < size; i++) {arr[i] = stack.pop().val;}return arr;}
}

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

例如,给出

前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:

3
   / \
  9  20
    /  \
   15   7

限制:

0 <= 节点个数 <= 5000

思路:

1、先序序列的第一个元素是根

2、找到根在中序序列中的位置

3、重复以上过程。

/*** 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) {int n = preorder.length;if (n == 0)return null;int rootVal = preorder[0], rootIndex = 0;for (int i = 0; i < n; i++) {if (inorder[i] == rootVal) {rootIndex = i;break;}}TreeNode root = new TreeNode(rootVal);root.left = buildTree(Arrays.copyOfRange(preorder, 1, 1 + rootIndex), Arrays.copyOfRange(inorder, 0, rootIndex));root.right = buildTree(Arrays.copyOfRange(preorder, 1 + rootIndex, n), Arrays.copyOfRange(inorder, rootIndex + 1, n));return root;}
}

剑指offer:3-7记录相关推荐

  1. 剑指offer刷题记录 python3 Java

    剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...

  2. 剑指offer做题记录

    1. 剑指 Offer 03. 数组中重复的数字   力扣 class Solution { public:int findRepeatNumber(vector<int>& nu ...

  3. 剑指offer刷题记录(上)

    记录刷题过程,方便自己后期回顾 题目来自<剑指offer>,在牛客上OC,思路大多来自剑指offer,偶尔来自自己的碎碎念,代码自己瞎写的,如果有更优的方法请告诉我,谢谢大佬们 语言:py ...

  4. 剑指Offer 刷题记录

    文章目录 剑指offer题目 01. 二维数组中的查找 02. 替换空格 03. 从尾到头打印链表 04. 重建二叉树 05. 两个堆栈模拟一个队列 06. 旋转数组的最小数字 07. 斐波那契数列 ...

  5. 剑指offer:39-42记录

    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输 ...

  6. 剑指offer:63-66记录

    假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候 ...

  7. 剑指offer:50-53记录

    在字符串 s 中找出第一个只出现一次的字符.如果没有,返回一个单空格. 示例: s = "abaccdeff" 返回 "b" s = ""  ...

  8. 剑指offer:33-37记录

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜索树: 5     / \   ...

  9. 剑指offer:31-32记录(4道)

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是 ...

  10. 剑指offer:26-30记录

    输入两棵二叉树A和B,判断B是不是A的子结构.(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值. 例如: 给定的树 A: 3     / \    4   5 ...

最新文章

  1. 工作日志-W1444
  2. nodejs(1)---mongodb
  3. VC++2013出现bug: 无法打开源文件“stdafx.h”
  4. python爬虫的数据如何解决乱码_写爬虫时如何解决网页乱码问题
  5. 编写有效用例电子版_软件测试人员必须编写代码吗?
  6. java递归栈_java-66-用递归颠倒一个栈。例如输入栈{1,2,3,4,5},1在栈顶。颠倒之后的栈为{5,4,3,2,1},5处在栈顶...
  7. mysql57服务无法启动_将mysqld.service服务加入到systemctl
  8. .NET Core应用程序的2种部署方式
  9. iOS开发UI篇—UIScrollView控件实现图片缩放功能
  10. jsp查询不到mysql内容_java查询到mysql数据库的数据,jspbean查询不到
  11. 针对笔记本电源已接通未充电的提示怎么办
  12. 机器学习- 吴恩达Andrew Ng Week4 神经网络Neural Networks知识总结
  13. 工具分享:易读文档下载器(同时支持百度/豆丁)
  14. LaTeX简介及其在Mardown中的用法
  15. 如何将SCH 与DSN 文件转化
  16. Metasploit2: tcp port 139/445 – Samba smbd
  17. CentOS6.5搭建asterisk及配置软电话
  18. CFE的刷写与修改教程
  19. Android 滚动字幕实现
  20. 为什么我们需要软件定制化?

热门文章

  1. php页面怎么去登录,php中登录后跳转回原来要访问的页面实例
  2. padding 后尺寸变化 设置_padding margin border 和元素大小
  3. Hive-Based Registry使用
  4. post修改服务器数据源,postgresql安装及配置超详细教程
  5. libzdb 连接到mysql_MySQL 连接
  6. android电梯程序设计,课内资源 - 基于Android实现的电梯调度模拟
  7. fastapi 传输文件存文件_python3 FastAPI框架入门 基本使用, 模版渲染, 数据交互,cookie使用, 上传文件, 静态文件配置...
  8. 【转】C++学习四 冒泡排序法的一些改进
  9. Microsoft Visual Studio 文件识别及其用途简述
  10. C# 有什么惊艳到你的地方?