牛客网&LeetCode
文章平均质量分 57
goodluckwj
努力就会有回报
展开
-
LeetCode整理----合集一
一:两个数相加 一:需要考虑进位的问题,需要使用一个变量存储进位标识,每一次都去判断,而且在一个链表判断完成之后,另外一个链表,也是需要单独考虑进位问题的 二:在计算结束后,需要再次判断进位问题,如果有进位,则需要进行处理。class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //进位标识 int flag = 0; ...原创 2021-01-04 20:31:04 · 600 阅读 · 0 评论 -
多线程顺序执行多次,分别使用synchronized、ReentrantLock、CyclicBarrier、Semaphore实现
分为两种: 1. 只执行一次 2. 执行多次多次执行的方法:多线程编程时,需要特别注意以下几点:线程会存在并行执行的情况,如果不干预肯定是不行的,所以,需要借助一些手段,才能达到线程顺序执行的目的。最主要的是借助共享资源(共享变量)来实现。像ReentrantLock、CyclicBarrier、CountDown都是通过对共享变量进行操作的。在操作时,每个线程都需要清楚,是应该继续执行,还是说睡眠(等待),等待被唤醒,清楚等待的条件和唤醒后继节点的条件,这几点...原创 2020-11-16 19:18:07 · 752 阅读 · 0 评论 -
快速幂二进制取模算法
矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。这里先对原理(主要运用了矩阵乘法的结合律)做下简单形象的介绍:一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次幂。 但做下简单的改进就能减少连乘的次数,方法如下: 把n个矩阵进行两两分组,比如:A*A*A*A*A*A => (A*A)*(A*A)...原创 2016-07-23 10:57:46 · 4629 阅读 · 0 评论 -
数组中的逆序对 [Leetcode 剑指offer 归并排序]
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000题解: 最简单的方法是两次for循环,依次判断即可,不过这样的时间复杂度为O(N^2),使用这种做法也是比较low的。 ...原创 2020-08-14 13:14:08 · 273 阅读 · 0 评论 -
罗马数字转整数 【LeetCode 字符串】
罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。...原创 2020-07-14 10:39:49 · 270 阅读 · 0 评论 -
岛屿数量 【LeetCode 深度优先搜索】
给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出:1示例2:输入:[['1','1','0','0','0'...原创 2020-07-13 16:36:54 · 190 阅读 · 0 评论 -
并查集及题型
l并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。l并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元素初始化为一个集合...原创 2020-07-12 22:08:01 · 569 阅读 · 0 评论 -
Bone Collector 【01背包问题 java】
Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the...原创 2018-08-22 21:51:18 · 119 阅读 · 0 评论 -
NYOJ 58-最少步数【java版DFS&&BFS】
描述这有一个迷宫,有0~8行和0~8列:1,1,1,1,1,1,1,1,11,0,0,1,0,0,1,0,11,0,0,1,1,0,0,0,11,0,1,0,1,1,0,1,11,0,0,0,0,1,0,0,11,1,0,1,0,1,0,0,11,1,0,1,0,1,0,0,11,1,0,1,0,0,0,0,11,1,1,1,1,1,1,1,10表示道...原创 2018-08-18 11:00:07 · 500 阅读 · 0 评论 -
hdu1051 Wooden Sticks 【贪心+java】
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25552Accepted Submission(s): 10348 Problem Description ...原创 2018-08-30 21:56:38 · 478 阅读 · 0 评论 -
缺失数字 【leetCode 使用异或求解找一个缺省值问题】
缺失数字给定一个包含0, 1, 2, ..., n中n个数的序列,找出 0 ..n中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线...原创 2018-08-28 19:34:34 · 748 阅读 · 0 评论 -
GCD&素数打表&快速判断质数
GCD(求两数的最大公约数)#include <cstdio>__int64 GCD(__int64 a,__int64 b)//GCD{ if (a % b == 0) return b; else return GCD(b,a%b);}int main(){ __int64 a,b; __int64 ans...原创 2016-07-20 17:12:47 · 1249 阅读 · 1 评论 -
两数相加 【LeetCode 链表】
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:在创建一个新的链表,然后再新链...原创 2018-10-18 18:38:18 · 187 阅读 · 0 评论 -
相交链表 【LeetCode 链表】
编写一个程序,找到两个单链表相交的起始节点。例如,下面的两个链表:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。注意:如果两个链表没有交点,返回...原创 2018-10-18 14:45:25 · 217 阅读 · 0 评论 -
同构字符串 【LeetCode 字典dict的使用】
给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: true示例 2:输入: s = "foo", t = "bar"...原创 2018-10-15 11:06:35 · 228 阅读 · 0 评论 -
快乐数 【LeetCode 集合set的使用】
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例: 输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + ...原创 2018-10-14 21:31:09 · 308 阅读 · 0 评论 -
最接近的三数之和 【LeetCode 数组】
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:本题思路和三数之和比较像,只不过...原创 2018-10-13 00:18:23 · 206 阅读 · 0 评论 -
除自身以外数组的乘积 【LeetCode 数组】
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的...原创 2018-10-12 23:49:38 · 408 阅读 · 0 评论 -
并查集 【牛客网 朋友圈】
并查集:(union-find sets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。l并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元素初始化为一个集合初始化后...原创 2020-07-10 15:16:08 · 507 阅读 · 0 评论 -
链表有环问题 【剑指offer】
1.有一个单向链表,链表当中有可能出现“环”,就像下图这样。如何用程序判断出这个链表是有环链表? 对于判断有环问题,能判断后面的节点和前面节点有没有相等的,这里相等是指是同一个对象,也就只能由一个后继节点,对于这种情况,我们可以设置两个节点,都从头节点开始,一个节点走两步,fast .next.next,一个节点走一步,即slow .next,如果有环,那么就会有fa...原创 2018-08-25 20:57:59 · 1001 阅读 · 0 评论 -
两个栈实现队列 【剑指Offer 】
1.用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型思路:栈只能先进后出,与队列的先进先出不同,使用两个栈stack1和stack2, 对于放:stack1只管负责放入数据, 对于取: 如果stack2为空,我们要获取stack1底部的元素,所以要把所有元素先从stack1中取出来,然后放到stack2中,然后从sta...原创 2018-08-25 20:14:04 · 110 阅读 · 0 评论 -
最长上升(递增)子序列 牛客网【简单dp】
时间限制:1秒 空间限制:32768K广场上站着一支队伍,她们是来自全国各地的扭秧歌代表队,现在有她们的身高数据,请你帮忙找出身高依次递增的子序列。 例如队伍的身高数据是(1、7、3、5、9、4、8),其中依次递增的子序列有(1、7),(1、3、5、9),(1、3、4、8)等,其中最长的长度为4。输入描述:输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000)。...原创 2018-08-21 10:30:24 · 651 阅读 · 0 评论 -
餐馆 牛客网 【贪心+二分】
热度指数:24039 时间限制:1秒 空间限制:65536K 某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数; 有m批客人,每批客人有两个参数:b人数,c预计消费金额。 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消费金额最大输入描述:输入包括m+2行。 第一行两个整数n(1 <= n <= 50000),m(1 <= m...原创 2018-08-18 17:12:17 · 448 阅读 · 0 评论 -
连续最大和 牛客网 dp
[编程题]连续最大和热度指数:44608 时间限制:1秒 空间限制:32768K一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。...原创 2018-08-18 13:20:24 · 184 阅读 · 0 评论 -
全排列 【子集全排列 leetCode】
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解析: 我们知道全排列的含义就是一个序列所有的排序可能性,那么我们现在做这样的一个假设,假设给定的一些序列中第一位都不相同,那么就可以认定...原创 2018-09-11 18:58:18 · 290 阅读 · 0 评论 -
回文链表 【LeetCode 链表+ O(1) 空间复杂度】
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?题解:如果没有空间复杂度的限制,我们可以用栈来完成操作,使用快慢指针,将前一半放入栈中,然后依次和后一半进行判断。 如...原创 2018-09-17 17:44:53 · 1058 阅读 · 0 评论 -
旋转图像 【LeetCode 数组】
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3...原创 2018-09-13 22:46:29 · 130 阅读 · 0 评论 -
验证回文字符串 【LeetCode 字符串】
验证回文字符串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false题解:使用两个指针,分别指向头和尾,从头找到一个是数字或是字...原创 2018-09-14 22:54:46 · 761 阅读 · 3 评论 -
字符串转整数(atoi) 【LeetCode 字符串】
实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第一个非空字...原创 2018-09-15 00:12:38 · 133 阅读 · 0 评论 -
报数 【LeetCoded 字符串】
报数序列是指一个整照其中的整数的顺序进数序列,按行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一原创 2018-09-15 11:01:04 · 351 阅读 · 0 评论 -
最长公共前缀 【LeetCode 字符串】
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入原创 2018-09-15 14:24:43 · 230 阅读 · 0 评论 -
数组中的第K个最大元素 【LeetCode 排序】
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。题解:可以直接Array...原创 2018-09-20 19:54:04 · 2932 阅读 · 0 评论 -
盛最多水的容器 【LeetCode】
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2018-10-03 23:06:17 · 146 阅读 · 0 评论 -
最长回文子串 【LeetCode 动态规划】
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路:回文子串可以表示为第一个字符和最后一个字符相等,第二个字符和倒数第二个相等,所以,我们可以用动态规划求解,因为存在最优子问题,想要求出最长的,需...原创 2018-09-22 23:01:23 · 1526 阅读 · 0 评论 -
子集 【牛客网 求子集问题】
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]思路:对于子集问题,可以用"与运算"进行求解,例如本题求所有的子集可能,总共有8中可能,...原创 2018-09-08 16:30:27 · 541 阅读 · 0 评论