自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 leetcode每日一题:有序三元组中的最大值

解释:唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3。因此,答案是 0。解释:下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133。解释:下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77。,分别表示最大前缀和最大后缀,预处理好这2个数组,我们在遍历j的时候,输入:nums = [12,6,1,2,7]

2025-04-02 09:56:55 530

原创 leetcode每日一题:解决智力问题

乍一看,不就是个01背包的问题么:对于每一道题目,都可以选择解决或者不解决。可能会越界,越界时,我们让这部分直接等于0即可,相当于我们选择这一题后,后面不再有可选择的题目,所以后面的分数是0。输入:questions = [[1,1],[2,2],[3,3],[4,4],[5,5]]输入:questions = [[3,2],[4,3],[4,4],[2,5]]另外,还有一个注意点是,我们的状态转移方程中,,表示没有题目时,可以获得的最大得分,就是0。这一题是否解决,是有后效性的,如果选择了解决。

2025-04-01 11:14:22 682

原创 leetcode每日一题:数组美丽值求和

有了这2个辅助数组后,对于位置i我们在判断是否满足情况1的时间,只要判断条件。范围内的最大值即可,这样,可以省下一个大小为n的数组的空间开销。,我们要逐个判断美丽值:对于情况1,如果每个都去比较,判断单个i需要的时间复杂度是。对于情况3,在上述2种情况都判断后,不再需要单独判断。对于情况2,只要判断前后,判断单个i的时间复杂度是。美丽值 = 2,对于在i位置前面的数,都严格小于。美丽值 = 1,无法满足第1种情况下,且可以满足。前面的1个数严格小于它,后面的1个数严格大于它。首先还是读懂题目,对于符合。

2025-03-31 10:57:19 896

原创 leetcode每日一题:向字符串添加空格

2、开1个Map,记录spaces中出现的值和出现次数,这样在遍历原始String的时候,可以通过这个Map来判断是否要拼接空格,以及拼接空格的数量。如果spaces的值超过原始数组长度,基本是不合法的不需要处理,唯一要处理的是,刚好处理原始数组结束位置的空格。的长度范围,且当前在原始String中遍历到的下标就是space当前指示的下标,那么我们就拼接一个空格。输入:s = "spacing", spaces = [0,1,2,3,4,5,6]spaces中的值超过原始数组长度范围,提示中。

2025-03-30 10:57:18 766

原创 leetcode每日一题:图中的最长环

题意说人话就是,有向图中每个节点最多只有1条出边,求这个图中最大的环包含的节点数量,如果没有环,则返回-1。题目并不保证整个图是全部连通的,所以,我们可以先把这个图分成若干个不连通的部分,在每个部分内部,是连通的。因为题目保证了每个节点最多只有1条出边,所以确定了起始点后,往后遍历的路径是唯一的。对于情况2和情况3有环的情况,无论我们从哪个节点开始遍历,最终一定可以遍历到环内的节点,且可以重复走到环内的每个节点。数组来记录这个节点第一次被遍历到的时间,如果时间是0,证明这个节点没有被遍历过。

2025-03-29 11:00:36 759

原创 leetcode每日一题:最小化字符串长度

接着删除下标 1 左侧最近的那个 'd'(位于下标 0)以及下标 1 右侧最近的那个 'd'(位于下标 2)。接着删除下标 2 左侧最近的那个 'a'(位于下标 1)以及下标 2 右侧最近的那个 'a'(位于下标 3)。接着删除下标 1 左侧最近的那个 'a'(位于下标 0)以及下标 1 右侧最近的那个 'a'(位于下标 2)。下标 1 左侧不存在字符 'b' ,但右侧存在一个字符 'b'(位于下标 2),所以会删除位于下标 2 的字符 'b'。注意到这个字符串的字符,值域很小,仅是小写英文字母的范围。

2025-03-28 14:51:39 938

原创 leetcode每日一题:使所有字符相等的最小成本

,如果这个位置跟后面一个相邻的字符不相等,那么这个位置肯定要作为断点,要么反转前半部分,要么反转后半部分,才能让这2个相邻的字符相等。所以,我们发现,如果i作为断点,会改变。这样,其实每一个相邻位置,都可以看作是独立的,我们要让整体都相等,那么每一个相邻的位置都必须相等,我们只要遍历每一个相邻的位置,如果相等不需要处理,如果不相等,挑选较小的一半就行反转即可。第一步先读懂题目,说人话就是,每次可以选择一个位置,要么反转前半段,要么反转后半段,反转了多少个字符,成本就是多少,求使字符串内所有字符。

2025-03-28 13:49:19 653

原创 leetcode每日一题:k-avoiding 数组的最小总和

如果从 1 到 k/2 的数组,还是数量不足n,那么就要从k开始加入,依次加入 k, k+1, k+2... 直到凑满n个数。// 先计算 [1, k/2] 数组的和 再计算 [k, k + n - k/2 - 1]的和。都是不是正整数,不会出现在这个数组中,不需要考虑任意2个数和等于k的情况。解释:设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18。还是先读懂题目,要求不存在任何求和等于 k 的不同元素对,所以,如何我们在数组中选择了数字。数组的可能的最小总和。

2025-03-26 19:43:06 413

原创 leetcode每日一题:对角线上不同值的数量差

不过注意到值范围[1, 50]很小,我们可以用bitmap的思路,用一个Long类型(64位)的值来存,如果某个值 x 出现,就把从右开始第x位置为1,那么最后不同值的数量就是这个Long值的二进制表示中,1的数量。如果当前位置坐标是(i, j),左上对角线是指 (i-1, j-1)、(i-2, j-2)、 (i-3, j-3)、... 这些位置的连线,右下对焦线只是 (i+1, j+1)、(i+2, j+2)、(i+3, j+3)、... 这些位置的连线。对应答案是 |1 - 0| = 1。

2025-03-25 11:02:21 981

原创 leetcode每日一题:酿造药水需要的最少总时间

所以,这里跟直觉的贪心有一些区别,对于同一个巫师,处理一瓶药水后,并不能马上去处理下一瓶药水,要确保自己处理完成后,后一个巫师是空闲的状态。特别的,对于第0瓶药水,当前每个巫师都是空闲的,可以认为。这样,如果我们有n个巫师,对于第i瓶药水,就会有n个不等式,贪心的,求出满足这n个不等式的最小。首先要读懂题目,有个关键点是,对于同一瓶药水,在前一个巫师处理完成后,读懂了这个点,我们来看第i瓶药水的处理,假设我们记第i瓶药水是从第。,必须晚于等于上一瓶结束时间,保证开始处理第i瓶是,自己是空闲的,即满足。

2025-03-24 11:08:43 943

原创 leetcode每日一题:判断一个括号字符串是否有效

一看到题目是判断合法括号,就想到了这题好像我会啊,不就是用栈来判断,左括号压栈,右括号出栈,如果栈最后为空,且中间也没有不够用(遇到右括号,但是栈为空导致无元素可以弹出),那么就是合法括号。如果只有一种括号,这里还可以优化,不需要真正去压栈和出栈,用一个变量,左括号就+1,右括号就-1,直到最后结果为0,且中间不存在任何时候是小于0的情况,就是合法括号。我们可以将 s[0] 和 s[4] 变为 '(' ,不改变 s[2] 和 s[5] ,使 s 变为有效字符串。// 任意一个后缀,右括号都大于等于左括号。

2025-03-23 14:37:01 795

原创 leetcode每日一题:监控二叉树

原因是,如果有一种最优解是在叶子节点放置摄像头,那么我去掉这个摄像头,放置在这个叶子节点的父节点,监控到的范围会比在叶子节点的摄像头范围更广,明显是更优的做法。根据我们一开始贪心得到的逻辑,我们不可能在叶子节点放置摄像头,由于空节点可以看到是叶子节点的子节点,所以,我们把空节点状态定义成。如果左子节点或者右子节点有摄像头(排除掉某个子节点状态是0,上面已经讨论过了),此时当前节点会被这个子节点的摄像头监控到,当前节点的状态是。,那么当前节点必须放置摄像头,来监控这个状态为0的子节点,当前节点状态为。

2025-03-22 10:35:41 1097

原创 leetcode每日一题:最大或值

因为每次乘以2的操作,相当于二进制数的左移1位,选择同一个数左移,才能把最高的1移动到尽量靠左,即更加高位的位置,让整体数值最大。解释:如果我们对下标为 1 的元素进行操作,新的数组为 [12,18]。的二进制表示中所有为1的位,异或运算后都变成了0,如果这1位其他数是有1的,那么就多去除了。// 如果多个数值在某1位是1,那么无论这个数是否做位移,or的结果这1位一定是1。,代表在这1位,至少存在2个数的二进制表示为1,那么无论结果选择对那个。进行左移,这1位固定为1,我们在异或计算后,再次或运算。

2025-03-21 10:57:13 714

原创 leetcode每日一题:最少翻转操作数

这样,我们已经获取了p经过1次翻转后,可能到达的位置范围,不过这里需要注意的是,并不是范围内每个位置都可以达到,实际上,当我们用滑动窗口滑动子数组的时候,每滑动1个位置,p的翻转位置其实移动了2。翻转的子数组长度为 k = 3 ,1 此时在位置 0 处,所以我们可以翻转子数组 [0, 2],但翻转后的下标 2 在 banned 中,所以不能执行此操作。之间间隔2每次遍历全部的位置,如果k比较大,这中间位置很多,但是被ban掉的位置和之前已经达到过的位置,是不需要再次遍历的,虽然我们这里使用。

2025-03-20 12:30:17 793

原创 leetcode每日一题:转换二维数组

记录下原始数组中,每个元素出现的次数,然后构造二维数组中的每1行,贪心的,每1行要尽可能多的包含元素,把1个元素分配掉以后,需要从原始map中把这个数的出现次数-1,如果减到0,就删除对应的键值对,直到map为空,那二维数据也就构造完成。做法可以直接贪心,二维数组中,第1行包含原始数组中所有不重复的元素,第2行包含去掉第1行元素后,剩余元素中所有不重复的元素,以此类推,直到原始数组中不包含任何元素。nums 中的所有元素都有用到,并且每一行都由不同的整数组成,所以这是一个符合题目要求的答案。

2025-03-19 11:08:07 1229

原创 leetcode每日一题:对角线上的质数

预处理的优点是,我们保存预处理的结果后,后续的质数判断这一步会变快,当然也付出了存储空间和预处理时间的代价。如果我们的二维数组很大,需要判断是否是质数的次数很大,这个预处理的消耗就会比较值得;,n 可以看作是 x 的 y 被,我们把范围内所有的满足 x 的 y 倍的数,都标记成合数,那么剩余的,就都是质数了。同样的,这里也需要对1这个既不是质数,也不是合数的特殊值,进行额外判断。,这个范围不是很大,在判断质数这一步,我们可以先预处理,求出范围内所有的质数,这样就不用每次调用。

2025-03-18 11:32:51 784

原创 leetcode每日一题:使字符串平衡的最小交换次数

不过本题有一些差异,并不是要判断这个字符串是不是合法的括号,而是要求出,最小交换几对,使得这个字符串变成合法的括号。所以,我们这里处理上,也有一些小差异:可以把压栈和出栈的操作看到最合法括号的对消,类似消消乐,那么当我们遇到当前是右括号且空栈的情况下,没有左侧括号可以匹配,可以把这个单独的右括号记录下来。由于整体来看,左右括号的数量必然是相等的,所以我们把合法的括号都消除后,留下来的必然是这样的形式:“]]]...[[[”,k个']'开头,后面跟着k个‘[’。最终字符串变成 "[[][]]"。

2025-03-17 19:29:57 707

原创 【ruby学习笔记】正则表达式

如果熟悉其他的某种编程语言,对正则表达式应该都不会陌生。正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在ruby中正则表达式是在字符串处理中的必

2015-01-05 22:05:20 1117

原创 【ruby学习笔记】String的常用函数

String几乎是所有面向对象编程语言中最常用的类了,在ruby中也不例外,下面是几个在ruby中String的常用方法,记录下来。concat:连接2个字符串,样例:puts "Hello ".concat("world!")输出:Hello world!capitalize:连首字母大写,其他字母小写,样例:puts "hello World!".capit

2015-01-03 21:26:05 927

原创 【ruby学习笔记】Hello World

程序员学习任何一门新语言,总是从用新语言写一个Hello World开始的,我们也不例外,先用ruby写一个极简的Hello World。    说极简应该实至名归,因为只有一行代码:puts "Hello, Ruby!";    把上述代码保存到 helloWorld.rb 文件(ruby脚本的后缀是.rb),然后执行 ruby helloWorld.rb,就会看到在命令行打印出来H

2014-12-29 21:01:53 843

原创 【ruby学习笔记】初探ruby

之前一直对ruby只停留在听说过的状态,最近有一些闲暇的事件,学习一下ruby,为将来的ruby on rails开发做一些准备。ruby由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。相对于java这样的大而全的开发语言,ruby可以说是小而美的,非常类似于python,通常这样的语言的代码量只有java的五分之一吧,而且学习起来也比较容易,如果有

2014-12-28 21:30:45 697

原创 android中使用Application

在android开发过程中,我们可能存储一些全局的变量,最好在正在app的任何一个activity或者service中都可以访问到,这时我们可以使用application。我们的一个应用就叫application,那么应该很好理解一个应用里面只会存在一个单例的application,也不难想到用这个在存储全局变量,那么到底是怎么存储呢?首先,我们创建一个Application,继承andr

2014-12-21 23:10:32 771

原创 12只乒乓球

继续简单智力题:有12只乒乓球,其中有一只是次品,次品和正常的乒乓球外观相同,仅重量有差别,可能比正常的轻,也可能比正常的重,现在有一个天平,求3次称出那只次品的方法。目前想到的答案:为方便说明,将乒乓球按照1-12编号。第一步,将乒乓球分成3组,每组4只,例如(1,2,3,4),(5,6,7,8),(9,10,11,12),把第一组和第二组放上去称,可能会有3中结果:第1组比较重

2014-12-07 16:12:34 1483

原创 猎人,羊,狼,白菜

一个猎人带着一只羊,一只狼和一棵白菜回家,路上遇到一条河。河边只有一条船,但船太小,一次最多只可载猎人和另一样东西过河。但猎人不在时,狼要吃羊,羊要吃白菜。请问怎样才能把狼,羊,白菜都安全运过河?目前想到的解法:带羊过河,返回带狼过河,返回时把羊带回带白菜过河,返回

2014-12-03 09:04:02 3757

原创 我理解的SharedPreferences

android开发中,可能需要持久化少量的数据,譬如说一些用户设置的数据,用数据库就有点杀鸡用牛刀了,这时候可以尝试使用SharedPreferences。SharedPreferences是一种轻量级的存储数据的方式,使用xml文件来进行键值对方式的存储,而且使用起来非常轻量和快捷。得到SharedPreferences:SharedPreferences sharedPreferenc

2014-11-28 23:05:02 652

原创 EditText控制输入格式

在android的开发中,利用EditText控件的相关属性,可以简单有效地控制输入的格式。相比网页,省去了js校验的麻烦。以下是这些属性的一些例子:控制输入为0-9的数字:<EditText android:id="@+id/num" android:layout_width="200dp" android:layout_height="wrap_content" an

2014-11-27 22:24:28 1109

原创 (贪心)HDU 1789 解题报告

(贪心)HDU 1789 解题报告 思路:既然要让被扣掉的分数最少,那么必然是对分数高的作业优先安排。注意题中有一个不是很明显的条件可以支持这一点:完成每份作业都需要一天。这样就避免了优先完成一份分数高的作业而导致n(n>1)份作业没有完成,而且这n份作业分数和比一份分数高的作业还要大的情况。方法:对于所有的作业,按照分数从高到低排序,分数相同时,截止时间小的排在前面。另外初始化一个大小为n的数组,用来保存某一天是否已经被占用。然后开始贪心,对于每份作业,看从当天到当前之前的时间里面,有没有空

2014-11-26 22:58:54 903

原创 String.valueOf

String.valueOf方法有好几个重载方法,但是由于null不可能赋值给基本数据类型,所以只剩下2个备选的方法:String valueOf(char data[]) 和 String valueOf(Object obj)查看代码可以看到String valueOf(Object obj)进行了判空,而String valueOf(char data[])没有。所以很明显,第一种情况调用了String valueOf(char data[]),所以是报了空指针异常;而第二种情况下,调用了Stri

2014-11-26 20:49:47 3726

原创 (android学习笔记)Android View

Android View类:1.所有的Android组件均是View的子类。2.所有的组件均可以进行两种配置,一是通过方法进行配置。二是通过XML进行配置。TextView类:1.对于文本组件而言主要的目的是静态的显示一些文字,类似于标签的功能。2.其是android.widget.TextView类,是android.view.View类的直接子类。3.插

2014-11-25 21:18:17 761

原创 25匹马的问题

偶然看到个有意思的智力题,和大家一起讨论:25匹马,要找跑的最快的前三,每轮可以有5匹马赛跑,只能记录先后,不能记录时间,最少需要跑多少轮目前想到的解法:首先分5组,赛5轮,去掉每组最后两匹,剩15匹;然后5组第一名一起赛一轮,去掉最慢的两组,因为前面至少有3匹比这两组的都快;此时剩下9匹,最快的一匹已经产生,还剩8匹,再淘汰第3组的第二,三两匹,第2组

2014-11-24 23:24:41 1023

原创 我所理解的KMP

KMP算法是一种用于字符串匹配的算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,所以叫KMP算法。字符串匹配,就是有一个目标字符串S和模式字符串P,然后查找P在S中是否有出现,出现的话,位置是什么地方。最简单粗暴的方法就是逐个字符比较,从S的第0个字符开始,和P的第0个字符比较,如果相等,再比较后面一个,如果在第n个出现不想等,那么就把S置回第1个(上一次的后

2014-11-24 00:05:57 520

原创 快速幂

快速幂是一种对幂取模的快速算法,可以用a^b mod c来表示。

2014-11-20 23:31:08 586

转载 (转)《Java虚拟机原理图解》1.4 class文件中的字段表集合--field字段在class文件中是怎样组织的

原文地址:http://blog.youkuaiyun.com/luanlouis/article/details/410464430.前言         了解JVM虚拟机原理是每一个Java程序员修炼的必经之路。但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还

2014-11-15 15:10:52 660

原创 android中xUtils使用报告(一)

之前在开发过程中基本没有使用过android的一些开发框架,在朋友的介绍下,尝试了一下xUtils,现在把使用的感受分享出来。         首先是xUtils的一些简介:xUtils 包含了很多实用的android工具。xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...xUitls 最低兼容andr

2014-11-09 16:56:16 844

原创 HDU 1087 解题报告

Super Jumping! Jumping! Jumping!Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23005    Accepted Submission(s): 10122Problem Descript

2014-10-30 00:06:17 597

原创 并查集(Disjoint Set)

并查集,一种比较基础的算法,主要是用于解决一些连通性的问题,通常这些问题

2014-08-12 00:09:38 987

原创 HDU 1003 解题报告

Max SumTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 137277    Accepted Submission(s): 31816Problem DescriptionGiven a sequence a[

2014-05-24 19:09:15 6808

原创 HDU 1050 解题报告

Moving TablesTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17941    Accepted Submission(s): 6134Problem DescriptionThe famous ACM

2014-04-21 00:18:59 693

原创 HDU 2037 解题报告

今年暑假不ACTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25407    Accepted Submission(s): 13325Problem Description“今年暑假不AC?”“是的。”“

2014-04-20 23:34:43 3828

原创 HDU 1025 解题报告

吃糖果Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 21902    Accepted Submission(s): 6254Problem DescriptionHOHO,终于从Speakless手上赢走了所有的

2014-04-20 21:49:46 665

空空如也

空空如也

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

TA关注的人

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