algorithm-series-bracket
括号相关问题
20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
示例 1:
**输入:**s = “()”
**输出:**true
示例 2:
**输入:**s = “()[]{}”
**输出:**true
示例 3:
**输入:**s = “(]”
**输出:**false
示例 4:
**输入:**s = “([])”
**输出:**true
提示:
1 <= s.length <= 10^4
s 仅由括号 '()[]{}' 组成
1234567891011121314151617181920212223class Solution { public boolean isValid(String s) { // 栈 char cs[] = s.toCharArray(); ...
algorithm-series-array-occurrence-count-problem
数组数字出现次数问题
找出数组中只出现一次的数字
给定一个非空整数数组,其中某个元素只出现一次,其余元素均出现两次。找出只出现一次的元素。
1234567public int singleNumber(int[] nums) { int result = 0; for (int num : nums) { // 将所有数字异或,最终结果就是只出现一次的数字 result ^= num; } return result;}
找出数组中只出现一次的两个数字
给定一个整数数组,其中有两个元素只出现一次,其余元素均出现两次。找出这两个只出现一次的元素。
12345678910111213141516public int[] singleNumber(int[] nums) { int xor = 0; for (int num : nums) { // 对所有数字进行异或 xor ^= num; } int mask = xor & ...
algorithm-series-2d-partial-order
二维偏序
概念
偏序关系满足:
反自反性(Reflexivity): 对于集合中的每个元素,关系都与自身存在。
反对称性(Antisymmetry): 如果存在a<=b && b<=a,则必须是a==b
传递性(Transitivity): 如果存在a<=b && b<=c,则必须是a<=c
二维偏序问题涉及对一个二维数据集中元素的排序,其中排序不仅仅依赖于元素自身的大小关系,还可能依赖于元素在不同维度上的关系。
二维偏序是这样一类问题:已知点对的序列(a1,b1), (a2,b2), (a3,b3)...,
并在其上定义某种偏序关系<,现有点(ai,bi),求满足(aj,bj) < (ai,bi)的的数量。
二维偏序问题一般是要使其中的一个维度有序,再通过树状数组的方式处理另一个维度
翻转对
给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。
你需要返回给定数组中的重要翻转对的数量。
示例 1:
12输入: ...