资讯专栏INFORMATION COLUMN

小知识点【刷题向,整理】

陆斌 / 2492人阅读

摘要:详见这道题的笔记是单精度,小数点后位双精度,小数点后位。中默认浮点数类型为,所以如果直接写成会报错,应该写成或者同理是和默认定点数类型是所以定义的时候也需要加上表示类。

charArray toString
char[] 直接toString 得到的会是一个像这样的[C@6a2437ef序列,所以还是用这个方法:String.valueOf。这让我想到之前有道题(Anagram),我先将string变成char[],排序,然后放在hash表中,最后发现比较的时候明明两个相同的char[]就是不能相等,才发现这个问题。用String.valueOf解决,当初还想过序列化。(详见这道题的笔记)

float vs double, int vs long
float是单精度,4 bytes, 小数点后6-7位;double双精度, 8 bytes, 小数点后15位。Java中默认浮点数类型为double,所以如果直接写成 float af = 0.3444 会报错,应该写成 float af = 0.344f, 或者float af = (float)0.344.同理是int 和 Long,默认定点数类型是int所以定义的时候也需要加上32L表示Long类。
转换
xxx.[Target]Value 这个方法用来转换类型很常用,比如float to int, af.intValue(). 但是使用int时要注意,这是一个类的方法,定义成int i是没办法是用的,必须变成Integer i (Integer 与 int 的区别)。
强制转换与精度 低精度向高精度可以直接强制转换,反之则会面临精度丢失的问题,一般用BigDeceimal解决。

HashMap的遍历

boolean[] bool数组默认都是false.有时候hashset, hashmap空间太大可以考虑试试bool数组

Arrays.binarySearch是二分法查找,但它的返回值是(-(插入点) - 1), 这个在有一道Google的题里面很巧妙地用到了。binarySearch didn"t find

关于原码补码反码有一篇很棒的文章:true code, complementary code, ones-complementary code

Iterator
举个栗子,iterator用于遍历Collection. Collection中主要有set, queue, list。本来可以直接for遍历,但是这样耦合度太高,为了表现“能够访问collection又不暴露其具体的细节”,而产生了用一个iterator来遍历的想法。Collection继承了Iterable接口,从而可以通过构建一个Iterator = list.iterator(), 继而通过对这个新建的iterator访问来遍历list. Iterator有三个方法: hasNext(), next(), remove(). 一般这样用while(next()) {next()...}, remove()删除当前next()得到的元素。Iterator用在Flatten类型的题目中:一般要考虑cursor来指定当前位置,或者是两个queue/stack来存放当前位置

Collection里面的细分类
先贴一个很好的介绍Collection大家族。可以简单来说,Array存储的是基本类型(primitive)并且大小固定,Collection存储任意类型并且可以自动扩容。Collection是个大家族,里面包括List, Queue, Set, Deque... 而以Queue为例,它仅仅是一个接口,可以用LinkedList或者PriorityQueue来实现。具体关系看下面这张大图:

StringBuilder
归纳一下StringBuilder的常见方法:1)构造:一般是空着构造或者可以直接赋值(char, boolean, string...) 2)append(object) 3) delete(start, end) deleteCharAt 4) indexOf 5) insert 6) reverse 7) toString (* 有时候连用很好用,比如reverse().toString())

HashMap的空间优化
代表题目(Leetcode 387), 有时候可以考虑用一个很大的整形数组来优化hashmap的空间问题(256)。将hashmap的key值(如果可以int化)存为int[key] = value的形式,甚至可以更优化为bit型

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67229.html

相关文章

  • 题向错误整理

    SF排版真心太迷醉了... java中没有while(1)那个是C里面的啊,java是while(true),并且之后也不用再写什么了,while(true)之后默认的都是unreachable Math.sqrt(double x)Math很多方法,尤其是涉及小数的,都是输入输出都是double类型,比如sqrt,三角函数等等 ++i和i++int x = i++ 这种偷懒赋值很容易错啊! i...

    wmui 评论0 收藏0
  • 常用java方法整理题向,不定期更新)

    1. CharacterisDigit(), isAlphabetic(), isLetter() [Alphabet > letter]toLowerCase()2.各种长度String length()List类:size()array: length3.Arrayssort()4.Math系列容易混淆(double) pow(double m, double n) m的n次方(double)...

    taohonghui 评论0 收藏0
  • 思维导图整理大厂面试高频数组24: 合并两个有序数组的两种双指针思想, 力扣88

    摘要:此专栏文章是对力扣上算法题目各种方法的总结和归纳整理出最重要的思路和知识重点并以思维导图形式呈现当然也会加上我对导图的详解目的是为了更方便快捷的记忆和回忆算法重点不用每次都重复看题解毕竟算法不是做了一遍就能完全记住的所 ...

    darkerXi 评论0 收藏0
  • 第7期 Datawhale 组队学习计划

    马上就要开始啦这次共组织15个组队学习 涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类 难度系数分为低、中、高三档 可以按照需要参加 - 学习路线 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...

    dinfer 评论0 收藏0
  • ❤️导图整理大厂面试高频数组8: 移除元素的双指针优化, 力扣27❤️

    此专栏文章是对力扣上算法题目各种方法的总结和归纳, 整理出最重要的思路和知识重点并以思维导图形式呈现, 当然也会加上我对导图的详解. 目的是为了更方便快捷的记忆和回忆算法重点(不用每次都重复看题解), 毕竟算法不是做了一遍就能完全记住的. 所以本文适合已经知道解题思路和方法, 想进一步加强理解和记忆的朋友, 并不适合第一次接触此题的朋友(可以根据题号先去力扣看看官方题解, 然后再看本文内容). 关...

    zhangyucha0 评论0 收藏0

发表评论

0条评论

陆斌

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<