1.Integer.parseInt(String s, int radix)方法的作用是:将radix进制的字符串s转化成10进制的int型数字并返回。

Integer.valueof(String s, int radix)方法调用了上述方法,可以实现同样的效果。

  2.String[] aStr = A.split(" ");方法将字符串类型的A按照指定的分隔符转换成字符串串数组aStr

  3.String[] result = new String[list.size()];     list.toArray(result);将list转换成String类型的数组result

  4.List<String> aList = Arrays.asList(aStr);将字符串数组类型的aStr转换成List类型的aList

  5.Collections.sort(aList);可以按照默认的顺序对集合aList中的元素进行排序。Arrays.sort(int[] g);可以对数组g进行排序。

  6.StringBuffer中的new StringBuffer(word).reverse().toString()方法可以将字符串word传入其中构造一个sb对象并且反转原来的word字符串

  7.String的trim()方法是去掉字符串开头和结尾的空格,中间的空格不管。

  8.String[] testl = test.split(" |\\.");可以使用‘|’来使用多个分隔符空格和点进行字符串分割,有的需要转义,使用‘\\’,例如这里的点就需要转义。

  9.HashMap中的put方法,如果put多次相同的键会覆盖,另外for (String key : count.keySet())可以遍历HashMap集合。

  10.使用队列功能时,要使用LinkedList<Integer> list = new LinkedList<>();来声明生成的是一个链队列。list.get(0)获得最后add进去的元素。和getLast()同样效果。

  也可以使用Stack<Integer> stack = new Stack();来使用堆栈。

  11.Arrays.sort(candies)可以对数组进行排序。

  12.string转换成int  :Integer.valueOf("12") (返回Integer对象) 或Integer.PaseInt("12")(返回int)

int转换成string : String.valueOf(12)

char转换成string:String str=String.valueOf('2')

  13.在进行HashSet初始化的时候,如果觉得一个一个add代码太长,可以通过一个数组然后再循环添加

        Set<Character> vowel = new HashSet();
for (char c: new char[]{'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'})
vowel.add(c);

  14.word.substring(1)表示:从下标为1的位置开始到最后

  15.需要记住的ASCII码表:0(48),9(57),A(65),Z(90),a(97),z(122)

  16.Integer.parseInt无法将一个负数的补码转换成原始的负数,否则会报错java.lang.NumberFormatException

        System.out.println(Integer.toBinaryString(-20));
System.out.println(Integer.parseInt("11111111111111111111111111101100", 2));

  17.Character.isLetter(c)判断是不是字母,Character.toLowerCase(c)将大小写都统一成小写

  18.return !s.matches(".*LLL.*|.*A.*A.*");正则表达式,如果A出现两次即以上或者L连续出现三次,返回false,否则,返回true  

  19. if (set.contains(dividend)) return false;   else set.add(dividend);对于有可能循环出现的数来说,最好的方法就是使用集合,如果存在就返回,不存在就添加。

  20.两个字符型的整数直接相加得到的是二进制的相加的结果。例如‘2’+‘2’得到的结果是ASCII码相加,例如50+50=100

  21.在有时间要求的题目中,使用递归比使用迭代所需要的时间长很多,所以大部分情况可以考虑使用迭代。

  22.String vowels = "aeiouAEIOU";可以用String的contains方法而就可以不用集合set了。vowels.contains(chars[start]+"")

  23.杨辉三角,空间复杂度O(k),k表示第几行(从0开始),主要使用List集合的set(int index, E element);可以在index位置设置元素值element

    public List<Integer> getRow(int rowIndex) {
List<Integer> pascal = new ArrayList<>();
for (int i = 0; i <= rowIndex; i++) {
pascal.add(0, 1);
for (int j = 1; j < pascal.size()-1; j++) {
pascal.set(j, pascal.get(j) + pascal.get(j+1));
}
}
return pascal;
}

  24.(Same 9 years education, why are you so outstanding.)在做要用到栈的题的时候,不妨转变思维,例如括号匹配"{{)}"这种题,可以来一波反向思维。

public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (char c : s.toCharArray()) {
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != c)
return false;
}
return stack.isEmpty();
}

  25.linux 查看txt的第10行

awk 'NR==10' data.txt
sed -n '10p' data.txt
nl data.txt | sed -n '10p'
head - data.txt | tail -

  26.求一个整数的所有因数的问题:可以按照这样的思想:

    public boolean checkPerfectNumber(int num) {
if (num <= 0) return false;
int sum = 0;
for (int i = 1; i * i <= num; i++) {
if (num%i == 0) {
sum += i;
if (i * i != num) sum += num/i;
}
}
return sum - num == num;
}

  27.HashMap扩容条件:同时满足初始容量大于哈希因子并且要插入的数据发生碰撞才扩容,否则,可以存在填满所有容量的情况。

  例如:初始容量16,装填因子0.75,在装填12个后,如果第13个发生了碰撞,那么就要扩容,如果不碰撞,就可以装进去。

  28.使用grep、awk和sed来查看txt中号码格式为(xxx) xxx-xxxx or xxx-xxx-xxxx的号码

grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt
sed -n -r '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt
awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt
或者
grep -e '\(^[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}$\)' -e '\(^([0-9]\{3\})[ ]\{1\}[0-9]\{3\}-\([0-9]\{4\}\)$\)' file.txt

  29.在使用二分法解决问题时,使用int mid = left + (right - left)/2;来代替int mid = (right+left)/2,可以很好地解决OverFlow问题。(Easy 278)

  30.对于String A, String B,A.indexOf(B) >= 0的作用就是判断A中包不包含子字符串B。A.indexOf(B)的结果就是求A中子串为B的位置,也就是A中B字符串的第一个字符的索引,如果不包含就返回-1.

  31.sb.deleteCharAt(i);可以删除i位置上的字符, sb.insert(i, c);可以在i位置上插入字符c

  32.result.add(Arrays.asList(new Integer[] {prev, curr}));向List<List<Integer>> result中插入List<Integer>的标准写法。

  33.String[] a = c.toArray(new String[0]);可以将集合类型的c转换成确定String类型的String[],就是开辟一块长度为0的String内存用来指示类型。

  34.List<Integer> list = Arrays.asList(2,3),可以不用new然后一个一个add,这样便于快速初始化。

  35.Arrays.sort(a);可以对数组a进行排序,Arrays.binarySearch(int[] a, int key)可以使用二分查找在a数组中查找到key的索引,如果不存在返回-1.

  36.String的trim()方法可以取出字符串首位空格,如果想取出中间的空格,可以使用replace(“ ”,“”)方法。

LeetCode刷题笔记(1)常用知识点的更多相关文章

  1. LeetCode刷题笔记和想法(C++)

    主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...

  2. 18.9.10 LeetCode刷题笔记

    本人算法还是比较菜的,因此大部分在刷基础题,高手勿喷 选择Python进行刷题,因为坑少,所以不太想用CPP: 1.买股票的最佳时期2 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. ...

  3. LeetCode刷题笔记 - 12. 整数转罗马数字

    学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ...

  4. Leetcode刷题笔记(双指针)

    1.何为双指针 双指针主要用来遍历数组,两个指针指向不同的元素,从而协同完成任务.我们也可以类比这个概念,推广到多个数组的多个指针. 若两个指针指向同一数组,遍历方向相同且不会相交,可以称之为滑动窗口 ...

  5. LeetCode刷题笔记(1-9)

    LeetCode1-9 本文更多是作为一个习题笔记,没有太多讲解 1.两数之和 题目请点击链接 ↑ 最先想到暴力解法,直接双循环,但是这样复杂度为n平方 public int[] twoSum(int ...

  6. leetcode刷题笔记

    (1)Best Time to Buy and Sell Stock Total Accepted: 10430 Total Submissions: 33800My Submissions Say ...

  7. leetcode刷题笔记08 字符串转整数 (atoi)

    题目描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即 ...

  8. LeetCode刷题笔记-回溯法-分割回文串

    题目描述: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab"输出:[ ["aa", ...

  9. leetcode刷题笔记231 2的幂

    题目描述: 给定一个整数,写一个函数来判断它是否是2的幂. 题目分析: 判断一个整数是不是2的幂,可根据二进制来分析.2的幂如2,4,8,等有一个特点: 二进制数首位为1,其他位为0,如2为10,4为 ...

随机推荐

  1. Tomcat 报错 The APR based Apache Tomcat Native library which allows optimal performance in production environmen

    这个问题在我一次重新装了tomcat和myeclipse时出现 说实话 出现这个问题头大 但是好在解决了 美滋滋 最开始到处寻找各种解决方案 最后直接注释了server.xml中的一行 直接解决这个报 ...

  2. Jmeter not found in class'org.json.JSONObject 问题

    前景:公司有银行的项目要进行压测,但是接口有近视RSA加密,需发送签名,只能使用java编写原生接口脚本打包成jar使用BeanShell Sampler去调用发送请求.在使用的过程中遇到了如下问题. ...

  3. FTP无法登录问题-内有网盘福利

    http://dinghuqiang.blog.51cto.com/19871/701185/ 一顿操作猛如虎,还是没解决. 然后我想想,会不会是浏览器缓存问题? 换个火狐登录看看! 哇擦!看到报错了 ...

  4. 商用hadoop集群的配置命令分布

    角色 安装 hdfs配置 yarn配置 hdfs 格式化 启动yarn服务 启动hdfs服务 master yum install hadoop-hdfs-namenode yum install h ...

  5. 死磕 java同步系列之mysql分布式锁

    问题 (1)什么是分布式锁? (2)为什么需要分布式锁? (3)mysql如何实现分布式锁? (4)mysql分布式锁的优点和缺点? 简介 随着并发量的不断增加,单机的服务迟早要向多节点或者微服务进化 ...

  6. css3练习

    读条的实现1 .div{position: relative;border: 1px solid #111;width: 80px;height: 60px} .div div{width: 20px ...

  7. mysql初识笔记

    一.初始mysql mysql介绍: mysql版本: 版本号=3个数字+1个后缀 mysql-5.0.9-beta 5 0 9 Beta 主版本号 发行级别 发行稳定级别 发行系列 发行系列的版本号 ...

  8. Maven项目下使用log4j

    Apache Log4j是一个基于Java的日志记录工具,它的日志级别按下面顺序递减: 级别 描述 OFF 最高级别,用于关闭日志记录. FATAL 将导致应用程序提前终止的严重错误的信息将立即呈现在 ...

  9. python 学习之 基础篇一 python及pycharm的安装

    一. Python 环境搭建(安装请参照https://www.runoob.com/python/python-install.html) Python下载 Python官网:https://www ...

  10. CentOS 7 环境下修改主机名

    本篇文章简单介绍在CentOS 7的环境下更改主机名的方法步骤. 首先我们开启虚拟机,用root账户进行登陆,并且打开终端.我们看到默认的主机名是我们新建虚拟机时自定义的名称. 接下来我们用命令更改主 ...