自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小川的博客

公众号:程序员小川。

  • 博客(302)
  • 收藏
  • 关注

原创 一次大数据量导出优化--借助xml导出xls、xlsx文件

最近遇到一个问题,线上生产环境某个功能导出数据到excel文件非常缓慢,几万数据导十多分钟都导不出来,导出慢的原因一是主表A数据量太大,接近2亿,另外里面部分数据来自于另外一张表B,B表也是几千万的数据量,数据库层面能做的优化已经做了,视图、索引这些工具都上了(没有分表是一开始项目设计阶段就没考虑,后面也没有专人维护,是另外一段故事了,这里不展开描述),但是依旧很慢,那就只能改导出代码了。项目原来使用的是jxl来导出,生成的是xls格式Excel文件,这是旧版本的Excel文件,缺点有两点:一是单shee

2021-12-21 16:58:28 1936

原创 LeetCode.1217-交换芯片(Play with Chips)

这是小川的第421次更新,第454篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第270题(顺位题号是1217)。There are some chips, and the i-th chip is at position chips[i].You can perform any of the two following types of moves any numbe...

2019-10-09 08:47:42 400

原创 LeetCode.1207-唯一的元素出现次数(Unique Number of Occurrences)

这是小川的第419次更新,第452篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第269题(顺位题号是1207)。给定一个整数数组arr,当且仅当该数组中每个元素的出现次数唯一时,返回true。例如:输入:arr = [1,2,2,1,1,3]输出:true说明:值1出现3次,值2出现2次,值3出现1次。没有两个值出现的次数相同。输入:arr = [1,2]输...

2019-10-08 09:15:00 893

原创 LeetCode.1200-最小绝对值差(Minimum Absolute Difference)

这是小川的第418次更新,第451篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第268题(顺位题号是1200)。给定一个由不同的整数组成的数组arr,找到所有对元素,其中任意两个元素的绝对差值都最小。以升序返回关于配对的列表(相对于配对),每对[a,b]紧随其后:a,b来自arra < bb-a等于arr中任何两个元素的最小绝对差例如:输入:arr...

2019-10-06 20:56:06 609

原创 Facebook程序员跳楼事件:技术路线会越走越窄吗?

这是小川的第417次更新,第450篇原创这几天有个刷屏的文章,讲的是Facebook有位程序员跳楼了,这位程序员的一些信息也“被曝光”,比如年轻时是浙大的学霸,后来又赴美读硕,中途又转行成为程序员,在2018年跳槽进入Facebook,一家人依赖他的工作签证在美国生活等等信息,至于这位程序员选择轻生的原因,这里不讨论,本篇主要来讨论,作为程序员,技术路线会不会越走越窄,直至没得选?从一些信息来...

2019-09-29 08:50:19 757

原创 LeetCode.1189-balloon实例数最大值(Maximum Number of Balloons)

这是小川的第416次更新,第449篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第267题(顺位题号是1189)。给定一个字符串文本,使用文本字符来构成单词"balloon"的尽可能多的实例。每个字符最多可以在文本中使用一次。返回可以形成的最大实例数。例如:输入:text = “nlaebolko”输出:1输入:text = “loonbalxballpoon”...

2019-09-27 08:37:28 221

原创 LeetCode.1185-一周中的星期几(Day of the Week)

这是小川的第415次更新,第448篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第266题(顺位题号是1185)。给定日期,返回该日期的星期几。输入为三个整数,分别代表日,月和年。以下列值之一返回答案:{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。例如:输...

2019-09-26 08:33:54 532

原创 LeetCode.1184-公交车站之间的距离(Distance Between Bus Stops)

这是小川的第414次更新,第447篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第265题(顺位题号是1184)。公交车有n个从0到n-1的车站,形成一个圆圈。我们知道所有相邻车站对之间的距离,其中distance[i]是车站i与车站(i + 1)%n之间的距离。公交车沿两个方向运行,即顺时针和逆时针。返回给定起点和终点之间的最短距离。输入:distance = [1...

2019-09-25 09:18:54 536

原创 LeetCode.1175-质数排列(Prime Arrangements)

这是小川的第413次更新,第446篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第264题(顺位题号是1175)。返回1到n的排列数,以使质数处于质数索引(索引从1开始)。(请记住,当且仅当整数大于1,并且不能将其写为两个均小于它的正整数的乘积,它才是质数。)由于答案可能很大,因此请以10^9 + 7为模返回答案。例如:输入:n = 5输出:12说明:[1,2,5...

2019-09-24 08:44:36 471

原创 LeetCode.1170-比较字符串中最小字符的出现频率(Compare Strings by Frequency of the Smallest Char)

这是小川的第412次更新,第444篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第263题(顺位题号是1170)。在一个非空字符串s上定义一个函数f(s),该函数计算s中最小字符的出现频率。例如,如果s ="dcce",则f(s)= 2,因为最小字符为"c",其频率为2。现在,给定字符串数组queries和words,返回一个整数数组answer,其中每个answer...

2019-09-23 08:43:09 173

原创 LeetCode.1160-找到可以由给定字符组成的字符串(Find Words That Can Be Formed by Characters)

这是小川的第411次更新,第443篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第262题(顺位题号是1160)。你会得到一个字符串单词数组和一个字符串chars。如果字符串可以由字符中的字符组成(每个字符只能使用一次),则该字符串是好的。返回所有好的字符串的长度之和。例如:输入:words = [“cat”,“bt”,“hat”,“tree”],chars =“at...

2019-09-22 10:34:51 734

原创 LeetCode.1154-一年中的第几天(Day of the Year)

这是小川的第410次更新,第442篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第261题(顺位题号是1154)。给定表示格式为YYYY-MM-DD的公历日期的字符串日期,返回该日期在年份中的编号。例如:输入:date =“2019-01-09”输出:9说明:给定日期是2019年的第9天。输入:date =“2019-02-10”输出:41输入:date =“...

2019-09-21 09:06:47 359

原创 LeetCode.1137-第N个泰波那契数(N-th Tribonacci Number)

这是小川的第409次更新,第441篇原创看题和准备今天介绍的是LeetCode算法题中Easy级别的第260题(顺位题号是1137)。Tribonacci(泰波那契)序列Tn定义如下:对于n> = 0,T0 = 0,T1 = 1,T2 = 1,并且T(n+3) = T(n) + T(n+1) + T(n+2)。给定n,返回Tn的值。例如:输入:n = 4输出:4说明:T_...

2019-09-20 08:53:02 225

原创 一次线上图片打印失败问题排查

01 问题由来昨天产品在测试系统的时候,提了个bug,有个功能打印图片时,图片无法显示。为了重现这个bug,特意去测试环境看了下,还真存在,于是去看错误日志,发现报异常了。在某个类的某一行,有这个java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec报错信息,于是启动开发环境,打好断点,开始调试。JPEGCod...

2019-08-02 09:10:09 371

原创 LeetCode.1128-等价多米诺骨牌对的数量(Number of Equivalent Domino Pairs)

这是小川的第394次更新,第428篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第259题(顺位题号是1128)。给定多米诺骨牌列表,当且仅当(a == c且b == d)或(a == d且b == c),dominoes[i] = [a,b]等价于dominoes[j] = [c,d],也就是说,一个多米诺骨牌可以旋转到等价于另一个多米诺骨牌。返回0 <=...

2019-07-31 08:47:47 366

原创 LeetCode.1122-相对排序数组(Relative Sort Array)

这是小川的第393次更新,第427篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第258题(顺位题号是1122)。给定两个数组arr1和arr2,arr2中的元素是不同的,arr2中的所有元素也在arr1中。对arr1的元素进行排序,使arr1中元素的相对顺序与arr2中的相对顺序相同。未出现在arr2中的元素应按升序放置在arr1的末尾。例如:输入:arr1...

2019-07-30 08:39:28 262

原创 LeetCode.1108-使IP地址无效(Defanging an IP Address)

这是小川的第393次更新,第426篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第257题(顺位题号是1108)。给定有效(IPv4)IP地址,返回该IP地址的无效版本。一个无效的IP地址,是指用"[.]"取代每个点号"."。例如:输入:address =“1.1.1.1”输出:“1[.]1[.]1[.]1”输入:address =“255.100.50....

2019-07-29 08:49:16 312

原创 LeetCode.1103-向人们分发糖果(Distribute Candies to People)

这是小川的第393次更新,第425篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第256题(顺位题号是1103)。我们通过以下方式向一排n = num_people个人分发一些糖果:给第一个人送1个糖果,给第二个人送2个糖果,依此类推,直到我们给最后一个人送糖果。然后,我们回到行的开头,向第一个人提供n + 1个糖果,向第二个人提供n + 2个糖果,依此类推,直到...

2019-07-27 08:46:17 220

原创 LeetCode.1089-重复的0(Duplicate Zeros)

这是小川的第392次更新,第423篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第255题(顺位题号是1089)。给定一个固定长度的整数数组arr,复制每次出现的零,将剩余的元素向右移动。请注意,不会写入超出原始数组长度的元素。对输入数组进行上述修改,不要从函数返回任何内容。例如:输入:[1,0,2,3,0,4,5,0]输出:null说明:调用函数后,输...

2019-07-26 09:25:41 247

原创 LeetCode.1078-两词出现后的单词(Occurrences After Bigram)

这是小川的第392次更新,第422篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第254题(顺位题号是1078)。给出单词first和单词second,以"first second third"的形式在某些文本中出现,其中second在first之后立即出现,third在second之后立即出现。对于每个此类事件,将"third"添加到答案中,然后返回答案。例如...

2019-07-25 08:38:20 185

原创 LeetCode.1071-字符串最大公约数(Greatest Common Divisor of Strings)

这是小川的第391次更新,第421篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第253题(顺位题号是1071)。对于字符串S和T,当且仅当S = T + ... + T(T与自身连接1次或更多次)时,我们说"T除S"。返回最大的字符串X,使得X除以str1,X除以str2。例如:输入:str1 =“ABCABC”,str2 =“ABC”输出:“ABC”输...

2019-07-24 08:45:15 519

原创 LeetCode.1051-身高检查器(Height Checker)

这是小川的第390次更新,第420篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第252题(顺位题号是1051)。要求学生按身高递增的顺序站列来拍年度照片。返回没有站在正确位置的学生人数。(这是必须移动的学生人数,以便所有学生身高能够以递增的顺序排列。)例如:输入:[1,1,4,2,1,3]输出:3说明:身高4,3和最后身高1的学生没有站在正确的位置。注...

2019-07-23 08:45:58 149

原创 LeetCode.1047-重复删除字符串中的所有相邻重复项

这是小川的第389次更新,第419篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第251题(顺位题号是1047)。给定一个小写字母的字符串S,重复删除两个相邻且相等的字母。我们在S上反复删除,直到我们再也无法删除。在完成所有此类重复删除后返回最后一个字符串。保证答案是独一无二的。例如:输入:“abbaca”输出:“ca”说明:在"abbaca"中我们可以...

2019-07-22 08:47:55 351

原创 LeetCode.1046-最后的石头重量(Last Stone Weight)

这是小川的第388次更新,第418篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第250题(顺位题号是1046)。有一个石头集合,每个石头都有一个正整数重量值。每次,我们选择两块最重的岩石并将它们粉碎在一起。假设石头的重量为x和y,x <= y。粉碎的结果是:如果x == y,两块石头都被完全粉碎;如果x != y,重量为x的石头被完全粉碎,重量...

2019-07-21 11:15:22 452

原创 LeetCode.1037-有效的回旋镖(Valid Boomerang)

这是小川的第387次更新,第416篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第248题(顺位题号是1037)。回旋镖是一组各不相同且不在一条直线上的三个点。给出三个点的列表,判断这些点是否是回旋镖。例如:输入:[[1,1],[2,3],[3,2]]输出:true输入:[[1,1],[2,2],[3,3]]输出:false注意:points.le...

2019-07-19 08:49:24 190

原创 LeetCode.1033-移动石头直到连续(Moving Stones Until Consecutive)

这是小川的第386次更新,第414篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第247题(顺位题号是1033)。在a,b和c位置的数字线上有三块石头。每次,你在一个终点(即最低或最高位置的石头)上拾取一块石头,然后将它移动到这些终点之间的空置位置。形式上,假设石头当前位于x,y,z位置,x <y <z。你在x位置或z位置拾取石头,然后将石头移动到整数...

2019-07-18 08:51:39 428 2

原创 一文弄懂计数排序算法!

这是小川的第385次更新,第413篇原创01 计数排序算法概念计数排序不是一个比较排序算法,该算法于1954年由 Harold H. Seward提出,通过计数将时间复杂度降到了O(N)。02 基础版算法步骤第一步:找出原数组中元素值最大的,记为max。第二步:创建一个新数组count,其长度是max加1,其元素默认值都为0。第三步:遍历原数组中的元素,以原数组中的元素作为coun...

2019-07-17 08:42:07 184

原创 LeetCode.1030-曼哈顿距离排序矩阵单元格(Matrix Cells in Distance Order)

这是小川的第384次更新,第412篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第246题(顺位题号是1030)。我们给出一个矩阵,其中R行和C列具有整数坐标(r,c)的单元格,其中0 <= r <R且0 <= c <C。另外,我们在该矩阵中给出了一个坐标为(r0,c0)的单元格。返回矩阵中所有单元格的坐标,按照它们从(r0,c0)到最小...

2019-07-16 18:37:34 1108

原创 LeetCode.1029-两城调度(Two City Scheduling)

这是小川的第383次更新,第412篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第245题(顺位题号是1029)。公司计划采访的人数为2N。将第i个人飞往城市A的费用是[i][0],将第i个人飞到城市B的费用是费用[i][1]。返回将每个人带到一个城市的最低费用,这样每个城市就会有N个人到达。例如:输入:[[10,20],[30,200],[400,50],[...

2019-07-15 08:39:49 178

原创 LeetCode.1025-除数游戏(Divisor Game)

这是小川的第382次更新,第411篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第244题(顺位题号是1025)。Alice和Bob轮流玩游戏,Alice首先出发。最初,黑板上有一个数字N. 在每个玩家的回合中,该玩家进行以下操作:选择0 < x <N且N%x == 0的任何x。用N - x替换黑板上的数字N.此外,如果玩家无法移动,他们将输掉游...

2019-07-14 14:58:16 175 2

原创 LeetCode.1022-根到叶路径二进制数之和(Sum of Root To Leaf Binary Numbers)

这是小川的第381次更新,第410篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第243题(顺位题号是1022)。给定二叉树,每个节点值为0或1.每个根到叶路径表示以最高有效位开始的二进制数。例如,如果路径为0 -> 1 -> 1 -> 0 -> 1,那么这可能表示二进制的01101,即13。对于树中的所有叶子节点,请考虑从根到该叶子节点的...

2019-07-13 11:36:56 172

原创 LeetCode.1021-删除最外面的括号(Remove Outermost Parentheses)

这是小川的第380次更新,第408篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第242题(顺位题号是1021)。有效的括号字符串为空(""),"("+ A +")"或A + B,其中A和B是有效的括号字符串,+表示字符串连接。例如,"","()","(())()"和"(()(()))"都是有效的括号字符串。如果有效的括号字符串S是非空的,并且不存在将其拆分为S ...

2019-07-12 08:50:59 145

原创 LeetCode.1018-可被5整除的二进制数(Binary Prefix Divisible By 5)

这是小川的第379次更新,第407篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第241题(顺位题号是1018)。给定0和1的数组A,考虑N_i:从A[0]到A[i]的第i个子数组被解释为二进制数(从最高有效位到最低有效位)。返回布尔值answer列表,当且仅当N_i可被5整除时,answer[i]为true。例如:输入:[0,1,1]输出:[true,fa...

2019-07-11 08:47:45 653

原创 LeetCode.1010-歌曲总长度可被60整除的对数

这是小川的第377次更新,第405篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第239题(顺位题号是1010)。在歌曲列表中,第i首歌曲的持续时间为[i]秒。返回其总持续时间(以秒为单位)可被60整除的歌曲对的数量,即当i <j时,(time[i] + time[j])%60 == 0。例如:输入:[30,20,150,100,40]输出:3说明:...

2019-07-10 08:52:39 266

原创 LeetCode.1013-分割数组为三个和相同的部分

这是小川的第378次更新,第406篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第240题(顺位题号是1013)。给定一个整数数组A,当且仅当我们可以将数组分成具有相等和的三个非空部分时才返回true。形式上,我们可以对数组进行分区,如果我们能找到索引i + 1 <j使得A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2]...

2019-07-09 08:39:22 563

原创 LeetCode.1009-十进制数的补码(Complement of Base 10 Integer)

这是小川的第377次更新,第404篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第238题(顺位题号是1009)。每个非负整数N都具有二进制表示。例如,5可以二进制表示为"101",11可以二进制表示为"1011",依此类推。请注意,除N = 0外,任何二进制表示中都没有前导零。二进制表示的补码是将1改为0和将0改为1时得到的二进制数。例如,二进制中"101"的...

2019-07-08 21:36:45 464

原创 LeetCode.1005-K次取负数组和最大(Maximize Sum Of Array After K Negations)

这是悦乐书的第376次更新,第403篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第237题(顺位题号是1005)。给定一个整数数组A,我们必须按以下方式修改数组:我们选择一个i并用-A[i]替换A[i],重复这个过程K次。(我们可以多次选择相同的索引。)以这种方式修改后,返回数组可能的最大总和。例如:输入:A = [4,2,3], K = 1输出:5说明:...

2019-07-07 10:41:06 173

原创 LeetCode.1002-寻找共有字符(Find Common Characters)

这是悦乐书的第375次更新,第402篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第236题(顺位题号是1002)。给定仅由小写字母组成的字符串A,返回列表中所有字符串都有显示的字符的列表(包括重复字符)。例如,如果一个字符在所有字符串中出现3次但不是4次,则需要在最终答案中包含该字符三次。你可以按任何顺序返回答案。例如:输入:[“bella”,“label”,...

2019-07-06 11:44:13 305

原创 LeetCode.993-二叉树中的堂兄弟(Cousins in Binary Tree)

这是悦乐书的第374次更新,第401篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第235题(顺位题号是993)。在二叉树中,根节点在深度0处,并且每个深度为k的节点的子节点,他们深度为k + 1。如果二元树的两个节点具有相同的深度但具有不同的父节点,则它们是堂兄弟。我们给出了具有唯一值的二叉树root,以及树中两个不同节点的值x和y。当且仅当对应于值x和y的...

2019-07-05 08:47:05 215

原创 LeetCode.997-找到镇法官(Find the Town Judge)

这是悦乐书的第373次更新,第400篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第234题(顺位题号是997)。在一个城镇,有N个人从1到N标记。有传言说其中一个人是秘密的镇法官。如果镇法官存在,那么:镇法官不信任任何人。每个人(镇法官除外)都信任镇法官。只有一个人满足前两条。给定一个trust数组,一对trust[i] = [a,b]表...

2019-07-04 08:46:01 197

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除