LeetCode日常刷题1、657、717、67
1. 两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解答
class Solution {public int[] twoSum(int[] a, int target) {int[] res = new int[2];HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < a.length; i++) {if(map.containsKey(a[i])){res[0] = map.get(a[i]);res[1] = i;}map.put(target - a[i], i);}return res;}
}
657. 判断路线成圈
初始位置 (0, 0) 处有一个机器人。给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到原来的位置。
移动顺序由一个字符串表示。每一个动作都是由一个字符来表示的。机器人有效的动作有 R
(右),L
(左),U
(上)和 D
(下)。输出应为 true 或 false,表示机器人移动路线是否成圈。
示例 1:
输入: "UD" 输出: true
示例 2:
输入: "LL" 输出: false
public class Solution {public boolean judgeCircle(String moves) {// x轴坐标int x = 0;// y轴坐标int y = 0;for (int j = 0, length = moves.length(); j < length; j++) {if (moves.charAt(j) == 'R') {x++;}if (moves.charAt(j) == 'L') {x--;}if (moves.charAt(j) == 'U') {y++;}if (moves.charAt(j) == 'D') {y--;}}return (x==0&&y==0);}
}
717. 1比特与2比特字符
有两种特殊字符。第一种字符可以用一比特0
来表示。第二种字符可以用两比特(10
或 11
)来表示。
现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。
示例 1:
输入: bits = [1, 0, 0] 输出: True 解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。
示例 2:
输入: bits = [1, 1, 1, 0] 输出: False 解释: 唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。
注意:
1 <= len(bits) <= 1000
.bits[i]
总是0
或1
.
class Solution {public boolean isOneBitCharacter(int[] bits) {final int kl = bits.length-1;int i = 0;while(i<kl){i+=bits[i]+1;}return (i==kl)&&(bits[i]==0);}
}
这个题有点像脑筋急转弯,我们可以多写几个数组,例如bits=[1,1,0,1,0] 或者bits=[1,1,0,0,0,0],(规定了,最后一个数是0,那么只能是10,或者0)。前一个数组长度为5,后一个长度为6,而且,只有当长度为奇数的时候,才会有最后一个字符必定为一个一比特字符。
67. 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1
和 0
。
示例 1:
输入: a = "11", b = "1" 输出: "100"
示例 2:
输入: a = "1010", b = "1011" 输出: "10101"
class Solution {public String addBinary(String a, String b) {int i = a.length()-1,j = b.length()-1;int max = Math.max(i,j);char[] res = new char[max+2];int len = max + 1;char[] aa = a.toCharArray();char[] bb = b.toCharArray();int carry = 0;while(i>=0&&j>=0){if(aa[i] == '1' && bb[j] == '1'){res[len--] = carry==0?'0':'1';carry = 1;}else if(aa[i] == '0' && bb[j] == '0'){res[len--] = carry==0?'0':'1';carry = 0;}else{if(carry == 1){res[len--] = '0';carry = 1;}else{res[len--] = '1';carry = 0;}}i--;j--;}while(i >= 0){if(carry == 0){res[len--] = aa[i];}else{if(aa[i] == '1'){res[len--] = '0';carry = 1;}else{res[len--] = '1';carry = 0;}}i--;}while(j >= 0){if(carry == 0){res[len--] = bb[j];}else{if(bb[j] == '1'){res[len--] = '0';carry = 1;}else{res[len--] = '1';carry = 0;}}j--;}if(carry == 1){res[len--] = '1';}else{res[len--] = ' ';}return new String(res).trim();}
}
class Solution {public String addBinary(String a, String b) {StringBuilder result = new StringBuilder();int pointerA = a.length()-1;int pointerB = b.length()-1;int carry = 0;while(pointerA>=0 || pointerB>=0){int sum = carry;if(pointerA>=0){sum += (a.charAt(pointerA)-'0');pointerA--;}if(pointerB>=0){sum += (b.charAt(pointerB)-'0');pointerB--;}result.append(sum%2);carry = sum/2;}if(carry!=0){result.append('1');}return result.reverse().toString();}
}
第一种方法速度快,第二种方法简洁。
LeetCode日常刷题1、657、717、67相关推荐
- LeetCode刷题记录1——717. 1-bit and 2-bit Characters(easy)
LeetCode刷题记录1--717. 1-bit and 2-bit Characters(easy) LeetCode刷题记录1--717. 1-bit and 2-bit Characters( ...
- 【Leetcode】 刷题之路1(python)
leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- LeetCode代码刷题(17~24)
目录 17. 电话号码的字母组合 18. 四数之和 19. 删除链表的倒数第 N 个结点 20. 有效的括号 21. 合并两个有序链表 22. 括号生成 23. 合并K个升序链表 24. 两两交换链表 ...
- leetcode分类刷题笔记
leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...
- 看了这篇 LeetCode 的刷题心得,再也不用抄别人代码了
作者:VioletJack 原文:<LeetCode 算法题刷题心得>https://www.jianshu.com/p/8876704ea9c8 花了十几天,把<算法>看了一 ...
- 【Leetcode】刷题题单记录
程序=算法+数据结构,不管干哪一行,只要涉及到编程算法始终是最重要的!!! 算法基础差,变做题巩固!!! LeetCode刷题,搞起来! 由于我只会C++和Python, 所以题解只有C++ 和 Py ...
- 如何在 LeetCode 高效刷题,才能拿到一线大厂 Offer
有人说写代码就像我们平时开车,仅凭经验你就可以将车开走:但当有一天,这辆车出问题跑不起来的时候,你不懂汽车的运行机制,你要怎么排除和解决问题?所以拥有扎实的数据结构和算法,才能开好编程这辆车. 作为程 ...
- LeetCode部分刷题笔记!!!JavaScript!!!
详细解说请看视频JS老毕:人人都能看得懂的Leetcode力扣刷题教程合集 边看视频边记录笔记!!!部分题目在视频中无! 文章目录 LeetCode第1题:1. 两数之和 LeetCode第2题:2. ...
最新文章
- 百面机器学习之特征工程
- WCF获取客户端IP和端口
- ubuntu11.10 mysql_Ubuntu11.10下mysql+apache+PHP
- mysql 源代码16384_MySQL源码:Innobase文件系统管理
- [原创]浅谈在创业公司对PMF的理解
- 简单async/wait使用样例
- windows 本地搭建git仓库_Windows系统下搭建Git本地代码库
- Linux: Shared MIME
- asp.net获取服务器信息
- java栈匹配括号_使用到栈结构的一个表达式括号匹配检查类
- 【UDEV】 网卡MAC地址自动设置
- 怎么把png批量转换jpg格式?
- correspondence analysis of drug and genotype(spss)
- 屁孩君儿子讲解 2022 【例4.7】最小n值
- 7-3 敲笨钟 (20 分)Java
- 如何在Windows 10上修复缩略图问题
- shadowgun的飘扬旗帜shader
- 法国 计算机金融 大学,法国金融专业大学排名(2020年上交大)_快飞留学
- 手机与存储卡空间大小剩余怎么获取
- android手机如何查找文件在哪里设置,oppoReno怎么快速查找文件/程序/系统设置?