RW的剑指OFFER日记
这里是RW的剑指OFFER日记
野生程序猿RW
2020年毕业于台湾科技大学(Taiwan Tech),后端开发工程师一枚。
展开
-
剑指 Offer 57 - II. 和为s的连续正数序列(滑动窗口(双指针))
剑指 Offer 57 - II. 和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]] 限制: 1 <= target <= 10^5 滑动窗口一般表示成一个左闭右开区间 滑动窗口只原创 2022-02-28 18:11:19 · 63 阅读 · 0 评论 -
剑指 Offer 33. 二叉搜索树的后序遍历序列(单调栈)
剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3 示例 1: 输入: [1,6,3,2,5] 输出: false 示例 2: 输入: [1,3,2,6,5] 输出: true class Solution { public boolean ver原创 2022-02-22 23:47:18 · 57 阅读 · 0 评论 -
27. 二叉树的镜像
剑指 Offer 27. 二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \ 1 3 6 9 镜像输出: 4 / \ 7 2 / \ / \ 9 6 3 1 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] class Solution { public TreeNode mirrorTre原创 2022-02-14 21:02:56 · 101 阅读 · 0 评论 -
725. 分隔链表
725. 分隔链表 给你一个头结点为head的单链表和一个整数k ,请你设计一个算法将链表分隔为 k个连续的部分。 每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为null 。 这k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。 返回一个由上述 k部分组成的数组。 示例 1: 输入:head = [1,2,3], k = 5 输出:[[1],[2],[3],[],[]] 解释: 第一个元素 output[0] 为 out原创 2021-09-22 23:31:24 · 51 阅读 · 0 评论 -
剑指 Offer 25. 合并两个排序的链表
剑指 Offer 25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode原创 2021-09-21 19:42:27 · 34 阅读 · 0 评论 -
队列实现栈和栈实现队列
队列实现栈 class MyQueue { private Stack<Integer> a; private Stack<Integer> b; public MyQueue{ a = new Stack<>(); b = new Stack<>(); } public void Push(int x) { a.push(x); } public int pop(){ if (b.isEmpty()) { wh原创 2021-05-03 14:06:21 · 46 阅读 · 0 评论 -
108.将有序数组转换为二叉搜索树
将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 class Solution { public TreeNode sorted原创 2020-08-19 12:41:37 · 141 阅读 · 0 评论 -
面试题03. 数组中重复的数字
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出: 2或3 限制: 2 <= n <= 100000 方法一:遍历数组 由于只需要找出数组中任意一个重复的数字,因此遍历数组,遇到重复的数字即返回。为了判断一个数字是否重复遇到,使用集合存储已经遇到的数字,如果遇到的一个原创 2020-08-11 11:18:23 · 198 阅读 · 0 评论 -
石头剪刀布(百度测试开发工程师面试题)
题目 西西打算和一头小猪进行N轮剪刀石头布,初始时双方的分数都为0,对每一轮而言,如果不是平局则胜者得1分,败者扣1分。 小猪告诉西西它会在其中的M轮出石头,这意味着它会在剩下的N-M轮出剪刀(因为小猪不会出布)。西西想让自己的分数尽可能高,那么在西西足够聪明的情况下,他的分数至少是多少? 输入:输入两个空格隔开的整数N和M, 输出:输出在西西足够聪明的情况下,他的分数可能的最小值 题...原创 2020-03-17 00:12:23 · 1234 阅读 · 0 评论