自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阵雨的博客

never stop thinking

  • 博客(20)
  • 收藏
  • 关注

原创 二进制中1的个数——剑指offer(Java)

/*题目 *输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 * *//*思路 * * (n-1) & n 操作会使 末尾变0 * 5 =》 101 4 =》 100 101 & 100 = 100; 如果有1继续再来 知道a=0; * * 概念: 1 & 1 = 1 1 & 0 = 0 * */ ...

2019-02-26 18:02:18 232

原创 二维数组中查找目标值——剑指offer(Java)

/*题目* 在一个二维数组中,每一行从左到右递增,每一列从上到下递增* 输入一个二维数组和目标值,判断数组是否含有该目标值* *//* 分析 * 到右下角都是递增的,所以选一行列的最大值开始查找,即右上或者左下 * 因为是递增,所以判断比原来元素大还是小,直接移动 * 在一列看,只要比他小就上移动,因为最左边一列就是本行最小值,小了就直接排除,进入下一行 * 一旦一个数比左下角...

2019-02-26 16:20:47 689

原创 字符流中第一个不重复的数字——剑指offer(Java)

/*题目 * 请实现一个函数用来找出字符流中第一个只出现一次的字符 * *//*思路 * * 巧用 字符数组解决问题, ch[c]++ ,用来标记出现的次数, 等于1的时候只出现一次 * */  char[] chars = new char[256]; StringBuilder sb = new StringBuilder(); public c...

2019-02-26 01:59:53 173

原创 表示数值的字符串——剑指offer(Java)

/*题目 *请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 * * *//*思路 *例如,字符串 “+100”、”5e2”、”-123”、”3.1415” 以及 “-1E-16” 都表示数值, * 但”12e”、”1a3.14”、”1.2.3”、”+-5” 以及 “12e+5.4” 都不是 * 具体思路见代码注释 * */  public boolean...

2019-02-26 01:57:48 291

原创 字符串转为整数——剑指offer(Java)

/*题目 * 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数 * (数值为0或者字符串不是一个合法的数值则返回0)。 * *//*思路 * "-4c+4\@ AD " * 注意以上字符, 字符0 对应48 9对应57,完美的将数字剔除出来  1.只有第一位可以是符号位  2.其他为只能为数字 48<x<57  3.最后将字符累加 *...

2019-02-25 21:30:29 214

原创 第一个出现一次的字符——剑指offer(Java)

/*题目 *在一个字符串中找到第一个只出现一次的字符。如输入acbacd,则输出b。 * * *//*思路 * 要想找到这一个字母 必须全部遍历还要记录次数 * 双层循环可以解决,但是时间复杂度为 o(n^2) * 利用hash结构,空间换时间,存储字母出现的次数, 时间复杂度变为,o(n) * 知识点: linkedhashMap 输入与输出位置一只 比hashMap...

2019-02-24 16:26:44 157

原创 替换字符串中的空格——剑指offer(Java)

/*题目* 将一个字符串中的空格替换为 "%20"* *//*思路与注意点* 1.循环比较字符串单个字母,空格追加“%20”,否则追加字母* 2.在组成新的字符串的过程中,大量字符串组成String效率太低,采用StringBuilder,StringBuffer* 易出错:str.chart(i)并不能equals,需要转换成字符串* */ public static S...

2019-02-24 12:23:59 427

原创 反转字符串——剑指offer(Java)

/*题目 * 翻转字符串,字符串中的单词不翻转,单词以空格隔开 * I love you => you love I *//*思路 * 先反转整个字符串,再将单词反转 * 易混淆知识点:length为数组方法,length()为String方法 * */ public String ReverseSentence(String str){ i...

2019-02-24 11:43:11 443

原创 判断二叉树A是否包含子树B——剑指offer(Java)

/*题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)** *//*思路** 先从根节点开始判断,* 1.如果根节点相同,则从头遍历* 2.如果根不同,则从左右两个遍历,任意一个含有B树都可以,如果失败则递归* doesTree1HasTree2函数负责递归两个遍历两个树,直到B树为空则返回true其余都是false** */...

2019-02-23 21:35:13 1619 2

原创 数组中只出现一次的数字——剑指offer(Java)

/*题目 *一个整型数组里除了两个数字之外,其他的数字都出现了两次,请找到这两个只出现一次的数字 * *///知识点温习:两个相同的数异或 为 0,异或满足交换律和结合律/*思路 * 时间复杂度o(n) 空间复杂度o(1) * 将数组所有的数异或,最终只剩两个不相同的数异或结果,其余数被抵消, * 然后找出这个异或数 中的 位数为1的那一位,因为异或必定在此位上结果不同,为1或...

2019-02-21 15:16:03 99

原创 滑动窗口的最大值——剑指offer(Java)

/*题目*给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,* 那么一共存在6个滑动窗口:{[2,3,4],2,6,2,5,1},* {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,...

2019-02-21 10:54:38 178

原创 用两个栈实现队列

/*题目*用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。* *//*思路* 这个题目其实算是一道简单题,只要有数据结构理论的,完全可以理解整个过程,其核心思想就是两个栈,* 一个用来push原始进入,类似仓库的功能,仓库的元素按照栈的规则存放入货架,再从货架pop元素就可以了, 栈 先进后出 队列 先进先出* 注意点: 一定要 stack...

2019-02-20 13:04:34 106

原创 从尾到头打印链表——剑指offer(Java)

/*题目* 输入一个链表,从尾到头打印链表的每一个节点值** *//*思路* 借助栈实现,或使用递归* 栈具有先进后出,可以从尾到头** */ class ListNode{ int val; ListNode next=null; public ListNode(){ } public Li...

2019-02-18 13:24:47 102

原创 二叉搜索树转换双向链表——剑指offer(Java)

/*题目 * 二叉搜索树转换为双向链表 * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 * 要求不能创建任何新的结点,只能调整树中结点指针的指向。 * 比如输入下图中左边儿二搜索树,则输出转换后的排序双向链表。 * 4 / \ 2 5 / \ / \ 1 3 5 7 4=6=8=10=12=14=16 * *//*思路...

2019-02-18 12:01:02 2062

原创 删除链表中重复的节点——剑指offer(Java)

/*题目 * 在一个排序的链表中,存在着重复的节点,请删除该链表中重复的节点,重复的节点不保留,返回链表头指针 * 1 -》 2 -》 2 -》 3 -》 3 -》 4 -》 5 * 删除后 1 -》 4 -》 5 * *//*思路 * 遍历节点的同时判断当前节点与下一个节点是否相同,如果相同则删除, * 删除方法 使用相同节点的前一个节点,指向相同节点的下一个节点如图 *...

2019-02-17 19:38:55 2970 3

原创 找出两个链表的第一个公共节点——剑指offer(Java)

/*题目 * 输入两个链表,找出他们的第一个公共节点 * *//*思路 * 1.使用哈希表,将一个链表储存进去,再遍历另一个链表,与哈希表对比 * 2.求出两个链表的长度,然后长的链表把多出节点个数先走掉,两个链表在同时开始走 * 时间复杂度为 O(m + n),空间复杂度为O(1) *  * 下面这个编码就是这个原理,但是代码较难理解,看图示 一步一步就理解了 * ...

2019-02-17 18:00:22 600

原创 链表中环的入口节点——剑指offer(Java)

/*题目 * 链表中包含环,请找出该链表的环的入口节点 * *//*思路 * 1.使用哈希表,但是空间复杂度为O(n) * 2.使用快慢指针,slow 一次走一步,fast一次走两步,当两个相遇时,fast指针再重新指向head * 此时fast一次走一步,slow一次走一步,再次相遇则为入口 * */方法2的数学原理,见以下链接,讲的比较详细。https://blog....

2019-02-16 21:50:33 303

原创 复杂链表的复制——剑指offer(java)

/*题目 *输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点), * 返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) * *//*思路 * 1.利用哈希表辅助空间 2.不用辅助空间,相当于边遍历链表,边把链表复制。 * */其实链表的题目大多数是可以不通过...

2019-02-16 18:19:02 137

原创 O(1)时间删除链表节点——剑指offer(Java)

题目:    在O(1)时间内删除链表节点 思路:    /*如果题目要求为O(n)则遍历就可以    *   但是题目要求是O(1)所以只能一次查询就完成    *   直接将后一个元素的值赋予前一个,改变指针时间复杂度就为1    *   但是如果删除元素为末尾就是O(n)    *   我们知道要删除的节点是谁就知道下一个节点,所以    *   1.将下一个节点的数据赋...

2019-02-16 17:24:42 204

原创 认识回溯算法

目录 原理相似算法实现提高效率的技巧使用场景经典回溯算法案例原理回溯算法思想有点像时空穿越,就是每次面对选择时从一组可能的解中,选择一个满足要求的解,如果当你发现选错了的时候,就穿越时空回到上一个时间点重新选择。回溯算法本质上就是枚举,枚举所有的解,找到符合的解。 相似算法贪心算法:每次面对选择的时候做出最优的选择,这样一直选下去,使得最终解为最...

2019-02-12 16:08:15 363

空空如也

空空如也

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

TA关注的人

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