自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 754. Reach a Number

问题描述:给你一个范围在[-10^9, 10^9]的数字,从数轴上0开始,你可以选择向左或者向右移动,第n次移动的长度等于n。找出移动到目标数字所需要的最小移动次数。 思路:首先把负数全部转化为正数以简化问题,一开始的想法是先尽可能的向这个数字移动,然后通过来回的左右移动到达目标数字。然而,4需要移动次数为[-1,2,3],这与想法不符。随后我发现,如果以4为例,总移动步数为1+2+3=6步。6

2017-12-31 18:05:06 289

原创 292. Nim Game

问题描述:给你一堆石头,你和另一个朋友每次轮流移走1~3个石头。你先出手,问你能否移走最后一个石头。 思路:与其说这是个编程能力题,不如说这是个逻辑推理题。石头个数只要是4的倍数都不能。不是4的倍数都可以。 原答案: public boolean canWinNim(int n) { if(n%4==0) return false;

2017-12-27 11:11:25 110

原创 521. Longest Uncommon Subsequence I

问题描述:给你两个字符串,找出这两个字符串中,最长的非公共子序列的长度。 思路:仔细想想,发现这个题目就是个逗。如果a,b长度不相等,那么最长非公共子序列肯定是a,b中最长的那个。a,b长度相等,如果a,b两个字符串不相同,就是a,b的长度。如果相等,就是-1。再加上些空串判断,解决问题。 原答案: public int findLUSlength(String a, String b)

2017-12-27 10:32:20 134

原创 496. Next Greater Element I

问题描述:给你两个int数组,数组1是数组2的子集并且数组1,数组2中没有重复的数。查找数组1的数在数组2中,后续是否有比它大的数。有则返回数字,没有则返回-1; 思路:用map储存数组1中各个数字位置。遍历数组2时,从map中记录的位置开始遍历,从而提升效率。 原答案: public int[] nextGreaterElement(int[] nums1, int[] nums2) {

2017-12-23 14:57:04 242

原创 463. Island Perimeter

问题描述:给你一个二维数组,包含1,0.其中的1表示陆地,0表示海洋。只会有一块陆地并且陆地是上下左右相连,陆地中不会有湖泊。问,1构成的陆地有多少个海岸。 思路:想法1、遍历数组,遇到1时,查询它上下左右是否为1.以计算海岸长。太麻烦,舍弃。 想法2:遍历数组,由于数组只会上下左右相连并且只有一块陆地没有湖泊,所以可以先记录当前这一组的起始位置。与下一组起始位置相比较,得出重复的块数。从而算出

2017-12-22 17:54:20 202

原创 566. Reshape the Matrix

问题描述:将一个矩阵按照输入的行列数重新排列,如果不能按照输入的行列数重新排列,返回原矩阵。 思路:没什么好想的,一边遍历一边计算对应位置。 原答案: public int[][] matrixReshape(int[][] nums, int r, int c) { int col=nums.length; int row=0; if(co

2017-12-20 11:46:03 112

原创 412. Fizz Buzz

问题描述:给你一个正整数n,输出从1到n中的数字,遇到3的倍数输出Fizz,遇到5的倍数输出Buzz,遇到15的倍数输出FizzBuzz。 思路:1、取余。2、设置三个指针,每3,5,15,输出对应字符。本答案采用后者。 原答案: public List<String> fizzBuzz(int n) { int three=0; int five=0;

2017-12-19 11:39:33 177

原创 575. Distribute Candies

问题描述:给你一个长度为偶数的数组,数组长度为 [2, 10,000]。其中数字范围为 [-100,000, 100,000],每个数字代表不同种类的糖果。将糖果分成数量均等的两份,妹妹最多能得到多少种糖果。 思路:想了半天,终于明白这题其实很简单,妹妹得到的糖果种类数为(糖果种类数,最多糖果数)两者的最小值。 原答案: public int distributeCandies(int[]

2017-12-18 15:17:05 178

原创 349. Intersection of Two Arrays

问题描述:给你两个数组,找出它们的公共数字。 思路:通过map对已有数字进行存储读取。 原答案: public int[] intersection(int[] nums1, int[] nums2) { int length=nums1.length; Map<Integer,Boolean> map=new HashMap<Integer,Boolean

2017-12-17 15:13:24 103

原创 748. Shortest Completing Word

问题描述:给你一个字符串licensePlate,字符串中包含大小写字母,空格,数字。判断字符串数组words中,哪个字符串包含了licensePlate中所有的字母(大小写不敏感). 思路:将licensePlate预处理,全部转换为小写,去除数字,空格。然后对出现的字母进行统计。随后遍历words中每个字符串。根据之前的记录判断字符串是否包含所有的字母。 原答案: public Str

2017-12-17 15:08:45 221

原创 682. Baseball Game

问题描述:给你一个字符串数组,其中包含:数字、C、D、+、四种字符。数字表明你这一局得分,C表明你上一局得分无效,D表明你这句得分是上一局得分两倍,+表明你这一局得分是前两次有效得分之和。C不是有效得分并且会移除一次有效得分。 思路:原打算用两个指针分别记录上一局和上上局得分。但发现遇上连续多个C时,无法追溯之前的得分。题目上的标签为stack。C、D操作确实很像stack。但是+需要pop两次再

2017-12-17 10:33:20 229

原创 620. Not Boring Movies

问题描述:从cinema 表中找出description不是boring并且id为奇数的数据,按照rating降序排列。 原答案:select * from cinema where description!='boring' and id&1 order by rating desc;此答案即为最佳答案。 判断奇数的方法从网上找的,不得不说这个方法真的很妙。顺便附上偶数的判断 id=(id>>

2017-12-16 16:09:26 191

原创 344. Reverse String

问题描述:将一个字符串中字母倒序。 思路:根据557. Reverse Words in a String III题目中的经验,转换成char数组后,直接首尾兑换字母即可。 原答案: public String reverseString(String s) { char [] charArray=s.toCharArray(); int totalLeng

2017-12-16 15:49:55 131

原创 500. Keyboard Row

问题描述:给你一串字,判断这些字能否用美式键盘布局上同一行的字母打出来。 思路:写上52行的case when进行判断,想想都觉得美妙,所以直接看答案了。 最佳答案: public String[] findWords(String[] words) { String s1 = "qwertyuiop"; String s2 = "asdfghjkl";

2017-12-16 15:22:34 148

原创 557. Reverse Words in a String III

问题描述:将一句话中每个字的字符串倒序排列。 思路:正向遍历,声明一个StringBuffer,遇上空格就append。遇上非空格时,如果是空格后第一个字符继续append,如果不是那么就insert到当前位置。 public String reverseWords(String s) { char[] charArray=s.toCharArray(); S

2017-12-15 16:53:14 113

原创 476. Number Complement

问题描述:将一个int型的正整数2进制形式逐位取反。 思路:逐位取反通过异或即可实现,所以构建一串二进制全是1的数据取异或即可。 原答案: public int findComplement(int num) { int leadZero=Integer.numberOfLeadingZeros(num); int count=1<<(32-leadZero

2017-12-15 11:55:14 119

原创 561. Array Partition I

问题描述:将具有2n个数的数组,将其两两分成一组。将每组的最小的数加起来。找到一个分组,从而使总和最大。 解决思路:直觉告诉我,将这个数组由大到小排好序,从第一个数开始隔一个数相加就是答案。 代码不贴了,这个题目感觉数学证明大于编程实现。

2017-12-11 20:24:49 107

空空如也

空空如也

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

TA关注的人

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