基本功
文章平均质量分 79
yi_afly
这个作者很懒,什么都没留下…
展开
-
从1到n整数中1出现的次数:O(logn)算法
1. 题目描述输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。2. 题目来源第一次看到是在《剑指Offer》第2版上,leetcode和牛客网上都有这道题。3. 本片博客的目的看了《剑指Offer》上的解法,我觉得不能算好:这段解释描述有些不清晰,而且没有图,难以理解。从书中给出的实现上来看,原创 2016-07-26 13:13:54 · 27989 阅读 · 37 评论 -
Java泛型的实现:“禁止”泛型数组
1. 问题来源今天在刷题时,遇到了需要使用泛型数组的场景。题目是按之字形打印二叉树。这道题目需要交替使用两个栈来解决,我的初始代码为:ArrayDeque<TreeNode>[] stacks = new ArrayDeque<TreeNode>[2]; //1stacks[0] = new ArrayDeque<TreeNode>();stacks[1] = new ArrayDequ原创 2016-07-28 20:24:44 · 6421 阅读 · 2 评论 -
static实现单例的隐患
1. 前言Java的单例有多种实现方式:单线程下的简单版本、无法在指令重排序下正常工作的Double-Check、static、内部类+static、枚举……。这篇文章要讨论的,是在使用static实现饿汉模式的单例时,会有隐患存在。2. Static单例的隐患2.1 传统写法static实现单例的代码如下:public class Singleton { private static Si原创 2016-07-29 13:10:31 · 2019 阅读 · 0 评论 -
协变、逆变与不变:数组、泛型、与返回类型
1. 前言之前几篇博文,有些地方涉及到了协变性、逆变性与不变性在Java中的表现,所以这篇博文将重点记录这方面的内容,并辅以JDK源码中的一些实例,加以说明。2. 定义这里讨论的协变、逆变与不变都是编程语言中的概念。下面介绍定义: 若类A是类B的子类,则记作A ≦ B。设有变换f(),若:当A ≦ B时,有f(A)≦ f(B),则称变换f()具有协变性。当A ≦ B时,有f(B)≦ f(A),原创 2016-07-30 17:38:11 · 2536 阅读 · 1 评论 -
几个常见的DP问题及解法
前言记录一些最近遇到的DP问题,并给出解法。只会记录我知道的最优解法(一般是时间最优),并贴出源码。有OJ的还会贴上地址。1. 求字符串的最长不重复子串的长度举例:abcabcbb,返回abc;bbbbb,返回b;pwwkew,返回wke。注意pwke是子序列,不是子串。问题分析: 记字符串存放在字符数组cs中,遍历cs的下标为i。分析可知,想求截止到i的最长不重复子串的长度,只要从i向左原创 2016-08-01 00:12:08 · 12137 阅读 · 0 评论 -
Integer.valueOf转换负数时抛出NumberFormatException
Integer.valueOf转换负数时抛出NumberFormatException1. 问题描述今天在牛客上,有牛友抛出了这样一个问题: Integer m =Integer.valueOf("11111111111111111111111100000000",2); 上面这段代码,二进制数的长度是32位,没超出Integer的范围,为什么会抛出NumberFormatException的原创 2016-09-09 10:14:35 · 8165 阅读 · 0 评论