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);}
}
charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法.charAt()方法返回指定索引位置的char值。索引范围为0~length()-1.如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符.

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相关推荐

  1. 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( ...

  2. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  3. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  4. LeetCode代码刷题(17~24)

    目录 17. 电话号码的字母组合 18. 四数之和 19. 删除链表的倒数第 N 个结点 20. 有效的括号 21. 合并两个有序链表 22. 括号生成 23. 合并K个升序链表 24. 两两交换链表 ...

  5. leetcode分类刷题笔记

    leetcode分类刷题笔记--基于python3 写在前面 1.做题如果实在想不出时间复杂度比较优的解法,可以先写出暴力解法,尝试在其基础上优化 2.排序.双指针.二分等--经常可以优化时间复杂度 ...

  6. 看了这篇 LeetCode 的刷题心得,再也不用抄别人代码了

    作者:VioletJack 原文:<LeetCode 算法题刷题心得>https://www.jianshu.com/p/8876704ea9c8 花了十几天,把<算法>看了一 ...

  7. 【Leetcode】刷题题单记录

    程序=算法+数据结构,不管干哪一行,只要涉及到编程算法始终是最重要的!!! 算法基础差,变做题巩固!!! LeetCode刷题,搞起来! 由于我只会C++和Python, 所以题解只有C++ 和 Py ...

  8. 如何在 LeetCode 高效刷题,才能拿到一线大厂 Offer

    有人说写代码就像我们平时开车,仅凭经验你就可以将车开走:但当有一天,这辆车出问题跑不起来的时候,你不懂汽车的运行机制,你要怎么排除和解决问题?所以拥有扎实的数据结构和算法,才能开好编程这辆车. 作为程 ...

  9. LeetCode部分刷题笔记!!!JavaScript!!!

    详细解说请看视频JS老毕:人人都能看得懂的Leetcode力扣刷题教程合集 边看视频边记录笔记!!!部分题目在视频中无! 文章目录 LeetCode第1题:1. 两数之和 LeetCode第2题:2. ...

最新文章

  1. 百面机器学习之特征工程
  2. WCF获取客户端IP和端口
  3. ubuntu11.10 mysql_Ubuntu11.10下mysql+apache+PHP
  4. mysql 源代码16384_MySQL源码:Innobase文件系统管理
  5. [原创]浅谈在创业公司对PMF的理解
  6. 简单async/wait使用样例
  7. windows 本地搭建git仓库_Windows系统下搭建Git本地代码库
  8. Linux: Shared MIME
  9. asp.net获取服务器信息
  10. java栈匹配括号_使用到栈结构的一个表达式括号匹配检查类
  11. 【UDEV】 网卡MAC地址自动设置
  12. 怎么把png批量转换jpg格式?
  13. correspondence analysis of drug and genotype(spss)
  14. 屁孩君儿子讲解 2022 【例4.7】最小n值
  15. 7-3 敲笨钟 (20 分)Java
  16. 如何在Windows 10上修复缩略图问题
  17. shadowgun的飘扬旗帜shader
  18. 法国 计算机金融 大学,法国金融专业大学排名(2020年上交大)_快飞留学
  19. 手机与存储卡空间大小剩余怎么获取
  20. android手机如何查找文件在哪里设置,oppoReno怎么快速查找文件/程序/系统设置?

热门文章

  1. Oracle- imp/impdp导入dmp文件
  2. Lab 0: Setting up a productive workflow
  3. 美国大学生足球联赛数据集football——node2vec
  4. python回调廖雪蜂_廖雪峰Python总结4
  5. 百度智能小程序巡检调度方案演进之路
  6. mac上的PCB设计软件现状
  7. 微信DAT文件解密(dat转图像)
  8. [相机选型] 普通网络摄像头或小型摄像头和工业相机的区别
  9. 什么是案例管理模型和符号(CMMN)
  10. linux write的行为