3025-人员站位的方案数
3025-人员站位的方案数题目描述 给你一个 n x 2 的二维数组 points ,它表示二维平面上的一些点坐标,其中 points[i] = [xi, yi] 。 计算点对 (A, B) 的数量,其中 A 在 B 的左上角,并且 它们形成的长方形中(或直线上)没有其它点(包括边界)。 返回数量。 示例 1: 输入:points = [[1,1],[2,2],[3,3]] 输出:0 解释: 没有办法选择 A 和 B,使得 A 在 B 的左上角。 示例 2: 输入:points = [[6,2],[4,4],[2,6]] 输出:2 解释: 左边的是点对 (points[1], points[0]),其中 points[1] 在 points[0] 的左上角,并且形成的长方形内部是空的。 中间的是点对 (points[2], points[1]),和左边的一样是合法的点对。 右边的是点对 (points[2], points[0]),其中 points[2] 在 points[0] 的左上角,但 points[1] 在长方形内部,所以不是一个合法的点对。 示例...
数据结构-排序
排序一、十大排序算法分析 二、排序算法代码2.1 冒泡排序 123456789101112131415161718192021222324// 冒泡排序class BubbleSort{ /** * 时间复杂度 O(n^2) <br/> * 空间复杂度 O(1) <br/> * @param arr 待排序数组 */ public static void bubbleSort(int[] arr){ System.out.println("before bubbleSort \t ==> " + Arrays.stream(arr).boxed().toList()); int length = arr.length; for (int i = 0; i < length; i++) { for (int j = i + 1; j < length; j++) { ...
面试经典-合并区间
合并区间题目56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入:intervals = [[1,4],[4,5]]输出:[[1,5]]解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。 提示: 1 <= intervals.length <= 104 intervals[i].length == 2 0 <= starti <= endi <= 104 题解题解一(排序法)123456789101112131415public int[][] merge(int[][] interval...
面试经典-字母异位词分组
字母异位词分组题目49. 字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 12输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]] 示例 2: 12输入: strs = [""]输出: [[""]] 示例 3: 12输入: strs = ["a"]输出: [["a"]] 提示: 1 <= strs.length <= 104 0 <= strs[i].length <...
面试经典-有效的字母异位词
有效的字母异位词题目242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。 字母异位词 字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。 示例 1: 12输入: s = "anagram", t = "nagaram"输出: true 示例 2: 12输入: s = "rat", t = "car"输出: false 提示: 1 <= s.length, t.length <= 5 * 104 s 和 t 仅包含小写字母 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况? 题解题解一 按照同一规则排序后比较是否相同 12345678910public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { ret...
面试经典-三数之和
面试经典-三数之和题目15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 12345678输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]解释:nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。注意,输出的顺序和三元组的顺序并不重要。 示例 2: 123输入:nums = [0,1,1]输出:[]解释:唯一可能的三元组和不为 0 。 ...
面试经典-H指数
H指数 题解题目详情 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h 。如果 h 有多种可能的值,**h 指数** 是其中最大的那个。 示例 1: 输入:citations = [3,0,6,1,5]输出:3解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。 由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。 示例 2: 输入:citations = [1,3,1]输出:1 提示: n == citations.length 1 <= n <= 5000 0 <= citations[i] <= 1000 解题思路与题解 h 指数 是...
算法模块/面试经典-多数元素
多数元素 题解题目详情 点击跳转->多数元素 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums = [3,2,3]输出:3 示例 2: 输入:nums = [2,2,1,1,1,2,2]输出:2 提示: n == nums.length 1 <= n <= 5 * 104 -109 <= nums[i] <= 109 进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。 解题思路与题解 思考过程: 在看到题干时,我们很容易想到的是,我们维护一个Map,然后Map的泛型为 <value,count> 然后遍历数组,并将值存入map中,最后判断哪一个value的count大于数组长度的一半,于是就有了如下解法 12345678910111213141516171819public static int majorityE...
