随笔分类 - 力扣
摘要:给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。 /* 解法 双指针运行 先让两个数组排序,设置双指针分别从小到大遍历 每次判断指针小的
阅读全文
摘要:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 /* 解题思路 排序后,双指针向右遍历 */ class Solution { public int[] intersection(int[] a, int[]
阅读全文
摘要:给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。 元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现。 /* 双指针 一个朴素的做法是利用「双指针」进行前后扫描,当左右指针都是元音字母时,进行互换并移到下一位。 由于元音字母相对固定,因此我们可以使
阅读全文
摘要:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 class Solution { public void reverseString(char[] s) { int
阅读全文
摘要:给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x /* 基本分析 一个数 nn 如果是 44 的幂,等价于 nn 为质因数只有 22 的平方数。 因此我们可以将问题其转换:
阅读全文
摘要:给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。 class Solution { public int[] countBits(int n) { int[] res = new int[n +
阅读全文
摘要:给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x /* 解题思路 1,暴力做法是循环,每次乘以3 直到大于n,这样做法会超时。。 2,为了加快循环速度,可以用对当前数乘方,
阅读全文
摘要:给定一个整数数组 nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象int s
阅读全文
摘要:你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手 。每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 tru
阅读全文
摘要:给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。 /* 解题思路 先将规律pattern和字符串s分割开来,字符串s可以直接调用String
阅读全文
摘要:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 /* 两次遍历 我们创建两个指针i和j,第一次遍历的时候指针j用来记录当前有多少非0元素。即遍历的时候每遇到一个非0元素就将其往数组左边挪,第一次遍
阅读全文
摘要:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bool
阅读全文
摘要:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 /*缺少的数就是[0,n]的数总和剪去数组里的数的总和*/ class Solution { public int missingNumber(int[] nums) { int n
阅读全文
摘要:给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。 丑数 就是只包含质因数 2、3 和/或 5 的正整数。 /* 朴素解法 输入范围是 -2^{31} <= n <= 2^{31} - 1−2 31 <=n<=2 31 −1,我们只需要对输入进行分
阅读全文
摘要:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 /* 解题思路 时间复杂度为 O(1)O(1)的解法: 除个位外,每一位上的值都是通过 (9+1) 进位的过程得到的,想一下 拨算盘进位 把整数 n 看成 n 样物品,原本是以 10 个 1 份打包的,现在从这些
阅读全文
摘要:给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 /*解题思路:回溯 1.递归参数:根节点 2.终止条件:节点无左右孩子*/ class Solution { List<String> res = new ArrayList<>
阅读全文
摘要:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 /* 解题思路 因为出现次数要相同所以如果两个字符串长度不一样就直接返回 false ,然后先扫描 s 把 s 中每个char都记录
阅读全文
摘要:请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。 题目数据保证需要删除的节点 不是末尾节点 。 /* 方法、投机取巧 因为题目只给了要删除的节点,我们无法拿到其上一个节点,所以,我们要迂回一下想法。 我们可以
阅读全文
摘要:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,
阅读全文
摘要:给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode n
阅读全文

浙公网安备 33010602011771号