业精于勤,荒于嬉
种一棵树最
|

超级鲨鱼辣椒

园龄:6年4个月粉丝:5关注:1

随笔分类 -  算法

Java按位操作工具类
摘要:/** * Bit转换工具 */ @SuppressWarnings({"WeakerAccess", "unused"}) public class ConvertBit { /** * 短整型(int16)数据中包含的有效bit数量 */ public static final int BITS
289
0
0
[LeetCode 热题 Hot 100] 2.两数相加
摘要:话不多说,先上题目 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3],
44
0
0
[LeetCode 热题 Hot 100] 1.两数之和
摘要:话不多说,先上题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nu
34
0
0
剑指 Offer 42. 连续子数组的最大和(动态规划)
摘要:话不多说,先上题目 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 来源:力扣
31
0
0
剑指 Offer 40. 最小的k个数(70.60%,63.46%)
摘要:话不多说,先上题目 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr = [0,1,2,1
26
0
0
剑指 Offer 39. 数组中出现次数超过一半的数字(99.95%,80.84%)
摘要:话不多说,先上题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 来源:力扣(LeetCode) class Solution { pu
26
0
0
剑指 Offer 30. 包含min函数的栈(99.97%,90.87%)
摘要:话不多说,先上题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minSta
36
0
0
剑指 Offer 27. 二叉树的镜像(100%,98.49%)
摘要:话不多说,先上题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 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
28
0
0
剑指 Offer 25. 合并两个排序的链表(100%,91.15%)
摘要:话不多说,先上题目 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 ⇐ 链表长度 ⇐ 1000 来源:力扣(LeetCode) /** * Definition for
34
0
0
剑指 Offer 22. 链表中倒数第k个节点(100%,94.19%)
摘要:话不多说,先上题目 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例: 给定一个链表: 1-
34
0
0
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(93.50%,13.10%)
摘要:话不多说,先上题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。 来源:力扣(LeetCode) class
32
0
0
剑指 Offer 18. 删除链表的节点(100%,69.95%)
摘要:话不多说,先上题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的
30
0
0
剑指 Offer 17. 打印从1到最大的n位数(99.59%,80.92%)
摘要:话不多说,先上题目 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 来源:力扣(Lee
30
0
0
剑指 Offer 15. 二进制中1的个数(79.43%,60.74%)
摘要:话不多说,先上题目 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论
65
0
0
剑指 Offer 11. 旋转数组的最小数字(100%,61.02%)
摘要:话不多说,先上题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5,1,2] 输出:1 示例
18
0
0
剑指 Offer 10- I. 斐波那契数列
摘要:话不多说,先上题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数
23
0
0
剑指 Offer 09. 用两个栈实现队列
摘要:话不多说,先上题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendT
18
0
0
剑指 Offer 05. 替换空格(100%,81.65%)
摘要:话不多说,先上题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 来源:力扣(LeetCode) 两种思路: 方法一:使用String类提供的方法replace或replaceAl
26
0
0
剑指 Offer 03. 数组中重复的数字
摘要:话不多说,先上题目 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 来源:力扣
26
0
0
华为二面之手撕算法:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值
摘要:话不多说,先上题目 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[
404
0
0
点击右上角即可分享
微信分享提示
深色
回顶
展开