自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 算法基础介绍

算法复杂度

2022-09-11 00:55:38 206 1

原创 排序算法介绍

给定数组 arr = [2, 1, 7, 13, 5, 4, 9], 返回升序后的数组?

2022-09-11 00:38:21 230

原创 算法技巧/基础汇总

补码 ==> 原码:对于正数,则三码合一;基数为16,由 0 - 9、A、B、C、D、E、F 组成。二进制 十六进制:4位二进制数表示1位十六进制数。二进制 八进制:3位二进制数表示1位八进制数。正数的原码、反码、补码都相同,就是正数的二进制数。原码:直接将一个数值换成二进制数,最高位是符号位。ps:计算/存储使用的是补码,返回结果是原码!反码(负数):排除符号位,对原码按位取反。补码(负数):排除符号位,对反码加1。二进制:基数为2,由 0、1 组成。位运算是针对二进制的运算!............

2022-08-28 04:15:10 242 1

转载 寻找缺失元素 -- 位运算、整型溢出

一般来说,形如(a*b)/c或者(a+b)/c(比如二分查找)的运算,结果就算不溢出,分子也会提前溢出,所以对于这种运算要多思考一下,以免出现隐晦的bug。这样做了之后,就可以发现除了缺失元素之外,所有的索引和元素都组成一对儿了,现在如果把这个落单的索引2找出来,也就找到了缺失的那个元素。假设缺失元素的位置补了一个0,我们让每个索引减去其对应的元素,再把相减的结果加起来,不就是那个缺失的元素吗?类似异或运算,由于加减法满足交换律和结合律,所以总是能把成对儿的数字消去,留下缺失的那个元素的。......

2022-07-23 21:48:16 98

转载 装逼指南 -- 位运算

我们刚才说过,两个相同的数异或的结果是0,一个数和0异或的结果是它本身,所以我们把这一组整型全部异或一下,例如这组数据是1,2,3,4,5,1,2,3,4。把(1)中的x带入(2)中的x,有y=x^y=(x^y)^y=x^(y^y)=x^0=x。也就是说,那些出现了两次的数异或之后会变成0,那个出现一次的数,和0异或之后就等于它本身。对于(3),推导如下x=x^y=(x^y)^x=(x^x)^y=0^y=y。.........

2022-07-23 21:40:53 80

转载 Two Sum 问题的核心思想 -- HashMap 或者 HashSet

Two Sum 系列问题在 LeetCode 上有好几道,这篇文章就挑出有代表性的两道,介绍一下这种问题怎么解决。这个问题的最基本形式是这样:给你一个数组和一个整数,可以保证数组中存在两个数的和为,请你返回这两个数的索引。比如输入,算法应该返回数组,因为 3 + 3 = 6。这个问题如何解决呢?首先最简单粗暴的办法当然是穷举了:这个解法非常直接,时间复杂度 O(N^2),空间复杂度 O(1)。更好一点的解法,可以通过一个哈希表减少时间复杂度: 这样,由于哈希表的查询时间为 O(1),算法的时间复杂度降低到

2022-07-10 17:22:23 71

转载 双指针技巧汇总

我认为双指针技巧还可以分为两类,一类是「快慢指针」,一类是「左右指针」。前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环;后者主要解决数组(或者字符串)中的问题,比如二分查找。一、快慢指针的常见算法快慢指针一般都初始化指向链表的头结点 head,前进时快指针 fast 在前,慢指针 slow 在后,巧妙解决一些链表中的问题。1、判定链表中是否含有环这应该属于链表最基本的操作了,如果读者已经知道这个技巧,可以跳过。单链表的特点是每个节点只知道下一个节点,所以一个指针的话无法判断链表中是否含有环的。

2022-07-10 17:00:14 182

转载 动态规划介绍

我们刷leetcode的时候,经常会遇到动态规划类型题目。动态规划问题非常非常经典,也很有技巧性,一般大厂都非常喜欢问。今天跟大家一起来学习动态规划的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~什么是动态规划?动态规划的核心思想一个例子走进动态规划动态规划的解题套路leetcode案例分析公众号:捡田螺的小男孩动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的

2022-07-09 18:53:09 123

转载 Bitset改进你的程序质量 -- BitMap思路的java实现

BitSet 是用于存储二进制位和对二进制进行操作的 自动去重Java 数据结构,此类实现了一个按需增长的位向量。位 set 的每个组件都有一个 值。用非负的整数将 的位编入索引。可以对每个编入索引的位进行测试、设置或者清除。通过逻辑与、逻辑或和逻辑异或操作,可以使用一个 修改另一个 的内容。默认情况下,set 中所有位的初始值都是 。在程序runtime时,我们经常需要使用数组来记住程序的运行状态,并且根据这些状态及时 对数据做出更新,一般有以下处理办法分析可知,1byte=8bit int占用

2022-07-09 18:28:55 284

转载 在20亿个随机整数中找出m是否存在,你打算怎么存数据呢?-- BitMap/布隆过滤器

假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存按照惯例,用int存储数据的话,在Java中,int占4字节,1字节=8位(1 byte = 8 bit),一共20亿个int,因而占用的空间约(2000000000*4/1024/1024/1024)≈7.45G很可怕对吧,那如果用Bitmap存呢?只需要0.233G。嘶,这也太强了,为什么这么强呢?到底怎么算的呢?一、基本实现Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即

2022-07-09 17:16:56 279

转载 如何判断一个元素在亿级数据中是否存在?-- 布隆过滤器

现在有一个非常庞大的数据,假设全是 int 类型。现在我给你一个数,你需要告诉我它是否存在其中(尽量高效)。需求其实很清晰,只是要判断一个数据是否存在即可。但这里有一个比较重要的前提:非常庞大的数据。常规实现先不考虑这个条件,我们脑海中出现的第一种方案是什么?我想大多数想到的都是用 HashMap 来存放数据,因为它的写入查询的效率都比较高。写入和判断元素是否存在都有对应的 API,所以实现起来也比较简单。为此我写了一个单测,利用 HashSet 来存数据(底层也是 HashMap );同时为了后面的对比将

2022-07-09 16:20:19 148

原创 查询的数据经json包装,从后台发往ajax

查询的数据经json包装,从后台发往ajax

2017-10-31 01:08:26 320

原创 ajax接收后台的text、HTML、xml、json数据,及其文件数据

ajax接收后台的text、HTML、xml、json数据,及其文件数据

2017-10-31 00:25:29 929

原创 解析json数据

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2017-10-30 22:53:17 390

原创 解析html数据

解析HTML数据,有两种工具(jsoup 和 htmlparser),在此只讲解jsoup的使用。jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。使用时,要导入jsoup-1.10.3.jar。

2017-10-30 22:21:09 527

原创 解析xml数据

xml数据的解析,需要用到dom4j这个jar包。dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j-1.6.1的完整版大约11.2M,是一个名为dom4j-1.6.1.zip的压缩包,解压后除了需要导入dom4j-1.6.1.jar外,还需导入jaxen-1.1-beta-6.jar(否则执行时可能抛java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常)。

2017-10-30 19:43:23 270

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除