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. Sentinel Core流程分析

     上次介绍了Sentinel的基本概念,并在文章的最后介绍了基本的用法.这次将对用法中的主要流程和实现做说明,该部分主要涉及到源码中的sentinel-core模块. 1.token获取   如上为t ...

  2. # C# 中的Task创建指南

    本文还处于草稿阶段,难免还有错误修改改正,逻辑还不是很清晰,笔者会努力完善,长期更新! [0000] 前言 标题起得有些"大",意在集大家的力量,总结出来一份关于Task相对&qu ...

  3. Andorid监听SoftKeyboard弹起事件

    对于Android键盘事件Google并没有提供一个好的接口去监听它,有时候就为项目需要就必须要自己去想办法去监听,由于我最近也要实现登陆与注册的功能,我的想法很简单实现起来也比较容易,主要的原理是在 ...

  4. thymeleaf 语法

    一.语法: 1. 简单表达式 (simple expressions) ${...}  变量表达式 *{...}  选择变量表达式 #{...}  消息表达式 @{...}  链接url表达式 2.字 ...

  5. 对vue nextTick深入理解-vue性能优化、DOM更新时机、事件循环机制

    一.定义[nextTick.事件循环] nextTick的由来: 由于VUE的数据驱动视图更新,是异步的,即修改数据的当下,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图 ...

  6. react redux 二次开发流程

    在一个大项目中如何引入redux及其相关技术栈(react-redux redux-thunk redux-immutable ),已经成为react前端工程师不可或缺的技能,下面通过实现一个简单的t ...

  7. [Vjudge][POJ][Tony100K]搜索基础练习 - 全题解

    目录 POJ 1426 POJ 1321 POJ 2718 POJ 3414 POJ 1416 POJ 2362 POJ 3126 POJ 3009 个人整了一些搜索的简单题目,大家可以clone来练 ...

  8. 微信小程序 实现多行文字 超出部分省略号显示

    在开发小程序: 澳买 的 时候 遇到一个棘手的问题: 当搜索澳洲产品,获取产品列表的时候,有时候产品的名称翻译成中文特别长 我们不能全部在有限的列表里面把产品名都显示出来,这样格式不好控制,显示 出来 ...

  9. Java基础学习笔记(二) - 面向对象基础

    面向对象 一.面向对象概述 面向对象思想就是在计算机程序设计过程中,参照现实事物,将事物的属性特征.行为特征抽象出来,描述成计算机时间的设计思想.面向对象思想区别于面向过程思想,强调的是通过调用对象的 ...

  10. IDEA 学习笔记之 Scala项目开发

    Scala项目开发: 由于直接下载Scala plugin太慢,老是中断,所以手动下载: https://plugins.jetbrains.com/ 手动安装Scala plugin: 新建Scal ...