Java
文章平均质量分 63
神一般的路过
python
展开
-
Java String 为什么被设计成不可变类型 ? 几点思考
核心是因为String的设计是与基本数据类型一致的类似[int, char…] 等1. 消除多态带来的负面影响final关键字会禁止继承String类,所以在子类中修改String中equals比较方法所带来的语义混淆就可以避免。2. 引用对象的值是可以被改变的正常情况下,Set中是不可以出现相同的元素的,但是String如果作为一个可变类型,对象的地址和值就不统一,我们将可以通过改变对象的值来向Set中存入相同值的对象。这里我们使用StringBuilder类型来代替String,作为一个可变类型原创 2020-07-22 21:18:20 · 107 阅读 · 0 评论 -
你知道异或运算吗?
什么是异或运算?异或,英文为exclusive OR,缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。z = x ⊕ yz = x xor y以上两个式子是等价的– 引用自百度百科...原创 2020-03-20 18:43:41 · 1641 阅读 · 0 评论 -
2020年 Moore majority vote algorithm 摩尔投票法知多少
第一眼看到这个题目,想到的是使用Map来统计出现频次,然后遍历找出频次大于n/2的元素。class Solution { public int majorityElement(int[] nums) { Map<Integer, Integer> map = new HashMap<>(); for(Integer item: n...原创 2020-03-13 18:38:23 · 170 阅读 · 0 评论 -
[剑指 offer]面试题40. 最小的k个数
class Solution { private int size; private int[] arr; //把输入的数组堆化 private void heapify(int[] arr){ this.arr = new int[arr.length]; for(int i = 0; i < arr.length; i...原创 2020-03-04 22:41:04 · 117 阅读 · 0 评论 -
leetcode23.合并K个排序链表[困难]
采用分治算法每两个合并之后的链表继续合并/* * @lc app=leetcode.cn id=23 lang=java * * [23] 合并K个排序链表 * * https://leetcode-cn.com/problems/merge-k-sorted-lists/description/ * * algorithms * Hard (48.23%) * Likes:...原创 2020-03-04 22:01:33 · 226 阅读 · 0 评论 -
定义注解并使用
如何定义并使用java注解1. 创建@interface注解,定义字段2. 在要使用的地方实现validate方法,假如我就在Student类下进行验证,代码如下:定义注解package annotationTest;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;imp...原创 2020-02-25 19:47:25 · 456 阅读 · 0 评论 -
Add Two Numbers
leetcodeAdd Two Numbers 级别 medium写了简单的链表合并算法通俗易懂对题目的理解为两个方面 1.合并节点值大于等于10时,需要对后面节点进一位,进位还可能后导致的再进位如:1+9等 2.这里采用的是用l1节点就地合并,所以有两种情况l1.length>l2.length;l2到达尽头后需要后续进一位时l1有可能连续进位,所以在初步合并后还需while自增 l1.l原创 2017-06-10 17:30:21 · 233 阅读 · 0 评论