当前位置:   article > 正文

LeetCode中需要用到数据结构的各种方法(Java)_刷leedcode常用jdk方法

刷leedcode常用jdk方法

String

1、获取指定下标的字符char:charAt ( index)

2、连接两个字符串:str1.concat ( str2 )

3、比较:equals ( str )

4、返回子串:substring ( beginIndex,endIndex )

[ beginIndex , endIndex ),不包括结束索引

5、以字符数组char[ ]形式返回:toCharArray( )

6、删除字符串头尾空白处:trim( )

本质上是返回一个新的字符串,不改变原来的字符串

7、查看是否包含某个字符串,若是字符,必须用双引号引用:contains ( charSequence )

8、分割字符串:split ( regex )、split ( regex , limit)

返回String [ ]; . 、 $、 | 和 * 等转义字符,必须得加 \\;多个分隔符,可以用 | 作为连字符

9、变成字符数组:toCharArray ( )

示例:char[] array = str.toCharArray();

补充:String key = new String(array)表达式成立

x、字符串的长度:str.length ( )


StringBuilder(StringBuffer →线程安全)

注意:务必要通过toString ( )转换为String类的对象

1、追加字符:append( strs )

2、反转:reverse ( )

直接改变内部对象,返回对象本身(直接调用即可,不必返回);'0'的ASCII值为48.

3、删除指定下标的字符:delete ( startIndex,endIndex)

不包括endIndex

4、在某个下标前插入字符串:insert (offset,str)

示例:sb.insert(1, "--");=====》》  a--bcdef

5、指定起始下标替代字符串:replace (startIndex,endIndex,str)

6、返回指定下标的字符:charAt ( )

x、长度:length ( )


数组

1、新建数组(int类型示例):new int[ ]{101,102,103,104}

2、扩充(Math静态方法):Math.max(a,b)、Math.min(a,b)

                                             参数类型:int、long、float、double

3、扩充(Integer静态属性):Integer.MAX_VALUE 、                                                                          Integer.MIN_VALUE

4、异或运算,计算二进制中不同位置的个数⬇:x^y

异或满足交换律和结合律,与自己异或为0,与0异或为本身

5、计算二进制中1的个数:Integer.bitCount ( i )

6、数组排序:Arrays.sort ( array )

无返回值!直接改变原数组!参数可为:byte[ ]、int[ ]、double[ ]、char[ ] 等

补充:String key = new String(array),array为char[ ]类型

7、数组转换为List集合(静态方法):List<T> asList(T... a)

示例:List list_2 = Arrays.asList(new String[]{"String", "char","int","double"});

x、数组长度:array.length


一、LinkedList(ArrayList)

正常当作队列使用:

1、 尾部添加:add ( e )   等价于   addLast ( e )

2、头部移除:remove ( )   等价于   removeFirst( )

      指定下标删除:remove ( index)

3、list转换为数组:T[ ] toArray(T[ ] a)

示例:String[ ] strs = list.toArray(new String[list.size()]);

栈:(先进后出)

1、压入(添加到)栈中:push ( e )

2、弹出栈外,并返回该值:pop ( )

3、获取栈顶的值(不弹出):peek ( )

4、判断是否为空:isEmpty( )

队列:(先进先出)

1、 尾部添加:offer( e )   等价于   offerLast ( e )

2、头部移除:poll( )   等价于   pollFirst( )

3、返回第一个元素:peek( )   等价于   element ( )、getFirst ( )

4、获取list长度:size ( )


二、HashMap

HashMap 中的元素实际上是对象 ,如果是基本数据类型,则填写包装器类(除了 int-Integer、char-Character,其他的包装器类皆为首字母大写。)

1、添加 :put ( key, value )

若key已存在,则替代并返回旧的 value 值;若不存在则直接插入,返回 null。

2、访问:get ( key )

3、删除:remove ( key )

删除key对应的键值对key-value,返回删除的key对应的value值

4、清空所有:clear ( )

清空所有的键值对,void无返回值

5、迭代key / value:keySet ( ) values ( )

keySet方法返回的是泛型的Set集合,values方法返回的是Collection<T>的集合

6、判断键值对存在与否:containsKey (key)   containsValue(value)

7、计算大小:size ( )


三、HashSet 

底层调用HashMap的类,参数亦是对象,基本类型需要输入包装器类。

1、添加元素:add( e )

若已添加,返回false

2、删除指定元素:remove ( e )

3、判断是否包含某值:contains ( e )

4、删除集合内所有元素:clear ( )

5、迭代:

  1. HashSet<String> sites=new HashSet<>();
  2. sites.put("xxxxxx1");
  3. sites.put("xxxxxx2");
  4. sites.put("xxxxxx3");
  5. for (String i : sites) {
  6. System.out.println(i);
  7. }

x、计算大小:size ( )


四、ListNode(链表)

  1. public class ListNode {
  2. int val;
  3. ListNode next;
  4. ListNode() {}
  5. ListNode(int val) { this.val = val; }
  6. ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  7. }

合并两个有序列表:

  1. class Solution {
  2. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  3. if(l1==null){
  4. return l2;
  5. }else if(l2==null){
  6. return l1;
  7. }else if(l1.val<l2.val){
  8. l1.next=mergeTwoLists(l1.next,l2);
  9. return l1;
  10. }else{
  11. l2.next=mergeTwoLists(l1,l2.next);
  12. return l2;
  13. }
  14. }
  15. }


五、TreeNode(二叉树)

  1. public class TreeNode{
  2. int val;
  3. TreeNode left;
  4. TreeNode right;
  5. TreeNode(){}
  6. TreeNode(int val){this.val=val;}
  7. TreeNode(int val,TreeNode left,TreeNode right){this.val=val;
  8. this.left=left;
  9. this.right=right;}
  10. }

中序遍历 :

  1. class Solution {
  2. public List<Integer> inorderTraversal(TreeNode root) {
  3. LinkedList<Integer> res=new LinkedList<Integer>();
  4. backtrace(root,res);
  5. return res;
  6. }
  7. public void backtrace(TreeNode root,LinkedList<Integer> res){
  8. if(root==null){
  9. return;
  10. }
  11. backtrace(root.left,res);
  12. res.add(root.val);
  13. backtrace(root.right,res);
  14. }
  15. }

对称二叉树:

  1. class Solution {
  2. public boolean isSymmetric(TreeNode root) {
  3. return check(root.left,root.right);
  4. }
  5. public boolean check(TreeNode p,TreeNode q){
  6. if(p==null && q==null){
  7. return true;
  8. }
  9. if(p==null || q==null){
  10. return false;
  11. }
  12. return p.val==q.val && check(p.left,q.right) && check(p.right,q.left);
  13. }
  14. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/935581
推荐阅读
相关标签
  

闽ICP备14008679号