
算法
文章平均质量分 60
Lindsay.Lu丶
- find more, find yourself. -
展开
-
Java正则表达式Regex 后向引用$1, \\1
1、在 Java 字符串的: 1 2 public String replaceFirst(String regex, String replacement) public String replaceAll(String regex, String replacement) 两方法的第二个参数中是可以用 $1, $2 ... 来引用第一个参数的括号分组的,简单 Java 示例代码如下: 1 2 "abc d原创 2022-03-31 16:50:23 · 3445 阅读 · 0 评论 -
解决样本不平衡问题的奇技淫巧 汇总
先举一个“恐怖”的例子,直观的感受一下样本不平衡问题: 你根据1000个正样本和1000个负样本正确训练出了一个准确率(precison,下同)90%召回率(recall,下同)90%的分类器,且通过实验验证没有欠采样过采样的问题哦~完美的样本,完美的模型,破费,你心里暗自得意。然后模型上线,正式预测每天的未知样本~。 开始一切都很美好,准确率召回率都很好。直到有一天,数据发生了一点变化,还是原来的数据类型和特征,只是每天新数据中正负样本变成了100个正样本,1...原创 2021-11-06 09:36:42 · 286 阅读 · 0 评论 -
【LeetCode】23. 合并K个排序链表(Hard)(Heap / 分治)
Q23. 合并K个排序链表 【Hard】合并 k 个排序链表,返回合并后的排序链表。说明:请分析和描述算法的复杂度。样例 0:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6样例 1: 输入: [2->4->null,null,-1->null] 输出: -1->2...原创 2021-04-14 12:02:51 · 131 阅读 · 0 评论 -
【LeetCode】264. 丑数II(Medium)
Q264. 丑数II编写一个程序,找出第 n 个丑数。 丑数就是质因数只包含 2, 3, 5 的正整数。说明:1 是丑数; n 不超过1690。例 1: 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...输入:9输出:10相关题目: 791.合并数字518.超级丑数513.完美平方488.快乐数147.水仙花数104.合并k排序链表最小堆 解题思路:很容易想到的方法是:从1起检验每个数是否为丑数,直到找到n个丑数为止。但是随着...原创 2021-04-14 10:04:18 · 83 阅读 · 0 评论 -
【LeetCode】qo_38. 字符串的排列【Medium】
Q9_10/Qo_38. 字符串的全排列II 【字符串】给定一个可包含重复的字符串,返回所有不重复的全排列。例1:Input: "abb"Output: ["abb", "bab", "bba"]Example 2:Input: "aabb"Output: ["aabb", "abab", "baba", "bbaa", "abba", "baab"]基本上和Permutation实现的思路一样,不同的是string的特性,不能直接append 还有pop,也传导的不是refe原创 2021-04-10 12:59:45 · 121 阅读 · 0 评论 -
【LeetCode】47. 全排列II(Medium)
47. 全排列II 【数字数组】给定一个可包含重复数字的序列,返回所有不重复的全排列。说明:0 ≤ N ≤ 30例1:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]].使用排列式深度优先搜索算法。和没有重复元素的 Permutation 一题相比,只加了两句话:Arrays.sort(nums) // 排序这样所有重复的数 if (i > 0 && nums[i]== nums[i - ...原创 2021-04-10 11:14:16 · 288 阅读 · 0 评论 -
【LeetCode】46.全排列·permutations(Medium)
46. 全排列·permutations 【数字数组】给定一个 没有重复 数字的序列,返回其所有可能的全排列挑战:使用递归和非递归分别解决例1:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]相关题目: 935.笛卡尔积371.用递归打印数字388.第k个排列16.带重复元素的排列思路:穷举整棵决策树是无法避免的。这也是回溯算法的...原创 2021-04-10 10:47:32 · 157 阅读 · 0 评论 -
【LeetCode】491. 递增子序列(Medium)
491. 递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是 2 。示例:输入:[4, 6, 7, 7]输出:[[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]思路:private List<List<Integer>> res = new ArrayList<>(); priv.原创 2021-04-09 13:27:51 · 116 阅读 · 0 评论 -
【LeetCode】90.子集II · Subsets-ii(Medium)
给定一个可能具有重复数字的列表,返回其所有可能的子集。子集中的每个元素都是非降序的 两个子集间的顺序是无关紧要的 解集中不能包含重复子集。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]挑战:你可以同时用递归与非递归的方式解决么?补充本题也可以不用used数组来去重(见下),因为递归的时候下一个startIndex是i+1而不是0。原创 2021-04-09 12:42:54 · 105 阅读 · 0 评论 -
【LeetCode】78. 子集 · Subsets(Medium)
78. 子集 · Subsets给一个含不同整数的集合,返回其所有的子集。子集中的元素排列必须是非降序的,解集必须不包含重复的子集。示例 1:输入:[0]输出:[ [], [0]]示例2:输入:[1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]挑战:你可以同时用递归与非递归的方式解决么?List&l...原创 2021-04-09 12:40:52 · 162 阅读 · 0 评论 -
【LeetCode】93. 复原IP地址(Medium)
93. 复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔说明:board 和 word 中只包含大写和小写英文字母。1 <= board.length <= 2001 <= board[i].length <= 2001 <= word.length <= 10^3例1:输入: "25525511135"原创 2021-04-08 13:51:19 · 129 阅读 · 0 评论 -
【LeetCode】81. 搜索旋转排序数组II(Medium)
81. 搜索旋转排序数组II·search-in-rotated-sorted-array-ii假设按照升序排序的数组在预先未知的某个点上进行了旋转。(例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输入: nums = [2,5,6,0,0,1,...原创 2021-04-08 13:12:47 · 169 阅读 · 0 评论 -
【LeetCode】240. 搜索二维矩阵 II (Medium)
240. 搜索二维矩阵 II编写一个高效的算法来搜索m x n矩阵 matrix 中的一个target 。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true示例 2:输入:matrix = [[1,4,7,11,15],...原创 2021-04-08 10:37:22 · 120 阅读 · 0 评论 -
【LeetCode】74. 搜索二维矩阵(Medium)
74. 搜索二维矩阵编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:fa..原创 2021-04-08 10:34:32 · 176 阅读 · 0 评论 -
【LeetCode】154. 寻找旋转排序数组中的最小值II(Hard)
154. 寻找旋转排序数组中的最小值II [Hard](感觉偏Medium,结合q81)假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。数组中可能存在重复元素。示例 1:输入: [2,2,2,0,1]输出: 0说明:这道题是 寻找旋转排序数组中的最小值 的延伸题目。允许重复会影响算法的时间复杂度吗?会如何影响,为什么?-- 最坏O(n),平均O...原创 2021-04-08 10:26:03 · 180 阅读 · 0 评论 -
【LeetCode】153. 寻找旋转排序数组中的最小值(Medium)
153. 寻找旋转排序数组中的最小值·find_minimum_in_rotated_sorted_array假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0参考题解:https://leetcode-c...原创 2021-04-08 09:43:09 · 131 阅读 · 0 评论 -
【LintCode】Q9_390. 寻找峰值 II【Hard】
Q9_390. 寻找峰值 II给定一个整数矩阵 A, 它有如下特性:相邻的整数不同 矩阵有 n 行 m 列,n和m不会小于3。 对于所有的 i < n, 都有 A[i][0] < A[i][1] && A[i][m - 2] > A[i][m - 1] 对于所有的 j < m, 都有 A[0][j] < A[1][j] && A[n - 2][j] > A[n - 1][j] 我们定义一个位置 [i,j] 是峰值, 当且仅原创 2021-01-19 10:54:42 · 218 阅读 · 0 评论 -
Hash树(散列树)和Trie树(字典树、前缀树)
1.Hash树理想的情况是希望不经过任何比较,一次存取便能得到所查的记录,那就必须在记的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和一个唯一的存储位置相对应。因而在查找时,只要根据这个对应关系f找到给定值K的像f(K)。由此,不需要进行比较便可直接取得所查记录。在此,我们称这个对应关系为哈希(Hash)函数,按这个思想建立的表为哈希表。在哈希表中对于不同的关键字可能得到同一哈希地址,这种现象称做冲突。在一般情况下,冲突只能尽可能地减少,而不能完全避免。因为哈希函数是从关键字集合到地转载 2020-10-23 08:56:49 · 1001 阅读 · 1 评论 -
Batch Norm、Layer Norm、Instance Norm、Group Norm、Switchable Norm总结
1.综述1.1 论文链接1、Batch Normalizationhttps://arxiv.org/pdf/1502.03167.pdf2、Layer Normalizaitonhttps://arxiv.org/pdf/1607.06450v1.pdf3、Instance Normalizationhttps://arxiv.org/pdf/1607.08022.pdfhttps://github.com/DmitryUlyanov/texture_nets4、Gro原创 2020-10-12 20:15:06 · 567 阅读 · 0 评论 -
Python实现二分查找与bisect模块详解
二分查找又叫折半查找,二分查找应该属于减治技术的成功应用。python标准库中还有一个灰常给力的模块,那就是bisect。这个库接受有序的序列,内部实现就是二分。下面这篇文章就详细介绍了Python如何实现二分查找与bisect模块,需要的朋友可以参考借鉴,下面来一起看看吧。前言其实Python 的列表(list)内部实现是一个数组,也就是一个线性表。在列表中查找元素可以使用list.index()方法,其时间复杂度为O(n) 。对于大数据量,则可以用二分查找进行优化。二分查找要求对象必须有..原创 2020-10-12 10:46:36 · 1049 阅读 · 0 评论 -
【LeetCode】最近时刻 next-closest-time [Medium]
681.最近时刻给定一个"HH:MM"格式的时间,重复使用这些数字,返回下一个最近的时间。每个数字可以被重复使用任意次。保证输入的时间都是有效的。例如,"01:34","12:09" 都是有效的,而"1:34","12:9"都不是有效的时间。例1:输入: "19:34"输出: "19:39"解释: 从1,9,3,4中选出的下一个最近的时间是19:39,它是五分钟后。 答案不是19:33,因为它是23小时59分钟后。例 2:输入: "23:59"输出: "22...原创 2020-07-29 11:14:21 · 1494 阅读 · 0 评论 -
【LeetCode】269.火星人词典 · alien-dictionary (Hard)
269. 火星人词典 · alien-dictionary有一种新的使用拉丁字母的外来语言。但是,你不知道字母之间的顺序。你会从词典中收到一个非空的单词列表,其中的单词在这种新语言的规则下按字典顺序排序。请推导出这种语言的字母顺序。说明:你可以假设所有的字母都是小写。如果a是b的前缀且b出现在a之前,那么这个顺序是无效的。如果顺序是无效的,则返回空字符串。这里可能有多个有效的字母顺序,返回以正常字典顺序看来最小的。例1:输入:["wrt","wrf","er","ett",".原创 2020-07-17 11:24:58 · 823 阅读 · 1 评论 -
LeetCode272. 二叉搜索树中最接近的值II(Hard)
给定一棵非空二叉搜索树以及一个target值,找到 BST 中最接近给定值的 k 个数。说明:给出的target值为浮点数你可以假设 k 总是合理的,即 k ≤ 总节点数我们可以保证给出的 BST 中只有唯一一个最接近给定值的 k 个值的集合提示:元素按照递增的顺序被访问(比如中序遍历)挑战:假设是一棵平衡二叉搜索树,你可以用时间复杂度低于O(n)的算法解决问题吗( n 为节点个数)?例1:输入:{3,1,4,#,2}0.2750002输出:...原创 2020-07-10 13:19:02 · 732 阅读 · 0 评论 -
【LeetCode】51.N皇后 - Hard
N皇后问题 · N-Queensn皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入: 4输出: [[".Q..", // 解法 1 "...Q", "Q...", "..Q."],["....原创 2020-07-07 08:47:46 · 167 阅读 · 0 评论 -
【LeetCode】1120. 子树的最大平均值 - Medium
1120/9_597. 具有最大平均数的子树 · subtree_with_maximum_average给一棵二叉树,找到有最大平均值的子树。返回子树的根结点(Lint)/最大平均值(Leet)。说明:Q9_597: LintCode会打印出根结点为你返回节点的子树,保证有最大平均数子树只有一棵。Q1120: LeetCode直接返回MaxAvg.提示:树中的节点数介于 1 到 5000之间。每个节点的值介于 0 到 100000 之间。如果结果与标准答案的误差不超..原创 2020-07-05 10:05:21 · 996 阅读 · 0 评论 -
算法与数据结构*
学习方法:chunk it up、deliberate practicing、feedback切题四件套:Clarification、Possible solutions、Coding、Test cases数组 链表 队列 栈 堆 哈希表 树 二叉查找树 字母树 LRU缓存 递归 贪心 分治 广度优先搜索 深度优先搜索...原创 2020-06-14 11:25:07 · 197 阅读 · 0 评论 -
算法岗面试常见问题大集合
1.参考博客算法岗面试常见问题大集合算法工程师手册2.模型过拟合的解决方法L1/L2正则化(原理奥卡姆剃刀):L2正则化也叫作权重衰减,目标函数中增加所有权重w参数的平方之和,迫使所有w可能趋向0但不为0;L1正则化在损失函数中加入...转载 2020-06-10 12:03:27 · 792 阅读 · 0 评论 -
判断两条线段是否相交
1.必备知识 向量积(矢积)与数量积(标积)的区别 名称 标积 / 内积 / 数量积 / 点积 矢积 / 外积 / 向量积 / 叉积 运算式(a,b和c粗体字,表示向量) a·b=|a|·|b|cosθ a×b=c,其中|c|=|a|·|b|sinθ,c的方向遵守右手定则 几何意义 向量a在向量b方向上的投影与向量b的模的乘积 c是垂直a、b所在平面,且以转载 2017-08-11 02:48:23 · 2931 阅读 · 0 评论 -
[TS-CG]计算几何-线段与线段的相交(2)(笔记)
前言:由于目前对于 公式(如上/下标)/图片 的支持尚不完善,故将笔记以图片形式截取下来。大致看了一下,是挺乱的…毕竟博主写文的主要目的是对个人学习历程的mark~对于无意中看到本文的君,stay or leave,请随意哈~碎碎念:部分代码实现部分是本人目前项目中的源码,借鉴于RoboCup Rescue竞赛中,MRL(美国)队伍的开源项目源码。 故代码实现部分应该还算比较有参考价值。至于杂乱的原创 2017-08-11 18:11:33 · 503 阅读 · 0 评论 -
【LeetCode】Remove x from (Un)sorted List * 4 - Easy->Medium
Remove Linked List Elements 删除链表中的元素 删除链表中等于给定值val的所有节点。样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。标签 链表Java:/*** Definition for singly-linked list.* public class ListNo原创 2017-09-04 00:22:56 · 221 阅读 · 0 评论 -
【LintCode】反转整数 - Easy ++
(1) 反转一个只有3位数的整数。i 注意事项 你可以假设输入一定是一个只有三位数的整数,这个整数大于等于100,小于1000。样例 123 反转之后是 321。 900 反转之后是 9。标签 基本实现相关题目 容易 反转整数【Java】public class Solution { /* * @param number: A 3-digit number.原创 2017-08-26 13:46:52 · 2032 阅读 · 0 评论 -
【LeetCode】 Reverse Linked List 翻转链表 ( Uber,FB ) - Medium++
Reverse Linked List II Reverse a linked list from position m to n.Notice Given m, n satisfy the following condition: 1 ≤ m ≤ n ≤ length of list.Example Given 1->2->3->4->5->NULL, m = 2 and n = 4, ret原创 2017-09-02 17:31:47 · 387 阅读 · 0 评论 -
【LeetCode】Reverse Linked List - Medium
Reverse a linked list from position m to n. Do it in-place and in one-pass.For example: Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.Note: Given m, n satisfy the following co原创 2017-09-05 07:12:24 · 329 阅读 · 0 评论 -
【LeetCode】链表相加 Add Two Numbers - Easy ++
Add Two Numbers You have two numbers represented by a linked list, where each node contains a single digit. The digits are stored in reverse order, such that the 1’s digit is at the head of the list. W原创 2017-09-02 18:35:50 · 298 阅读 · 0 评论 -
【Algorithms】拓扑排序的原理及其实现
转自:http://blog.youkuaiyun.com/dm_vincent/article/details/7714519本文将从以下几个方面介绍拓扑排序:拓扑排序的定义和前置条件和离散数学中偏序/全序概念的联系典型实现算法Kahn算法基于DFS的算法解的唯一性问题实际例子取材自以下材料:http://en.wikipedi转载 2017-09-05 19:43:32 · 268 阅读 · 0 评论 -
【LintCode】数组的全排序(1)
给定一个数组,返回其所有可能的排列。注意事项 你可以假设没有重复数字。样例 给出一个数组abc, 其全排列为: abc acb bac bca cba cabJava:public class Solution{ private static void print(char[] arr){ if(arr == null || arr.length == 0)原创 2017-08-28 17:45:55 · 417 阅读 · 0 评论 -
【LintCode】旋转字符串 - [Microsoft Onsite III] - Easy
旋转字符串 描述 笔记 数据 评测 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)您在真实的面试中是否遇到过这个题? Yes 样例 对于字符串 “abcdefg”.offset=0 => “abcdefg” offset=1 => “gabcdef” offset=2 => “fgabcde” offset=3 => “efgabcd” **挑战 在数原创 2017-08-28 00:52:33 · 305 阅读 · 0 评论 -
【LeetCode】Longest Palindrome(最长回文串) - Easy
最长回文串 给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。数据是大小写敏感的,也就是说,”Aa” 并不会被认为是一个回文串。i 注意事项假设字符串的长度不会超过 1010。样例 给出 s = “abccccdd” 返回 7一种可以构建出来的最长回文串方案是 “dccaccd”。标签 哈希表 亚马逊分析: 回文串:找到有重复的元素就可以组成回文串 + 中间可以有原创 2017-08-26 13:35:49 · 559 阅读 · 0 评论 -
【LeetCode】最短路径条数问题(BFS)
【分析】 这是权值相同的最短路径问题,即单源点Dijkstra算法退化为BFS(广度优先搜索)。 假定起点为0,终点为N【思路】 step[i]:到达某点的最短路径的步数,如k点:step[9] = 3; pathNum[i]:最短路径的条数,如k点:pathNum[9] = 2; pathNum[0] = 1:自己不动就是一种路径的选择假设当前节点为F,①若邻结点K处,step[j] =原创 2017-09-06 23:31:40 · 5240 阅读 · 0 评论 -
【LeetCode】最长括号匹配Longest Valid Parentheses
Longest Valid Parentheses [ 最长括号匹配 ] Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring. For “(()”, the longest valid原创 2017-09-07 00:51:11 · 424 阅读 · 0 评论