- 博客(42)
- 资源 (37)
- 收藏
- 关注
原创 08 java.lang.ProcessBuilder
ProcessBuilder[final] 2015.01.19 By 970655147这个类主要适用于启动当前操作系统的进程, 有些时候很有用 比如 : 我
2015-08-29 16:27:15 1562
原创 3.7 队列的最大值问题
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析解法一 : 在队列添加元素的时候 如果添加的元素大于当前的最大元素, 则对最大元素进行更新, 在队列删除元素的时候, 如果删除元素即为最大的元素, 则遍历一次列表更新最大的元素解法二 : 使用一个列表维护进队, 出队的顺序, 然后使用一个大根堆来维护最大的元素, 如果添加的元素大于当前的最大元素, 则添加元素重新整堆,
2015-08-28 22:03:27 797
原创 06 黑白棋
1. 前言这个是在贴吧 看见一个网友写了一个关于五子棋的界面, 然后我也模拟写了一个, 但是后来无趣的时候, 将他改成了黑白棋的规则, 但是没有加入判断胜负的逻辑, 只是一个存在基本规则的界面而已 这个实际上写了已经很久了,所以可能注释, 代码风格等信息可能不是那么的好看 备注 : 没有AI设计思路 : 难点主要在于对于八个方向上的可吃的棋子的处理元素介绍 棋盘 : 我们看到的是一个形象的
2015-08-28 16:12:02 618
原创 3.6 判断两个无环链表是否相交 & 找出相交的第一个结点
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述 3. 问题分析这两个问题也是非常经典的问题对于第一个问题 : 解法一 : 穷举, 穷举两个链表的各个元素, 判断有没有相同的结点解法二 : 遍历一次较长的链表, 然后将其唯一标识存在一个容器ids中, 然后在遍历一次另一个链表, 查找第二个链表中的元素是否存在于ids中, 如果存在, 则说明存在交点解法三 : 将一个链表连接到另一个
2015-08-28 15:05:46 652
原创 3.4 从无头链表中删除给定的结点 & 遍历一次逆转链表
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述 3. 问题分析第一个问题 : 因为给出的只是一个链表的结点, 来删除当前结点, 所以想要找出当前结点的前一个结点貌似不可能, 所以只有另想一种方法了 这里的方法是 : “狸猫换太子”, 将下一个元素的数据复制到当前结点上面, 然后在删除下一个元素, 已达到”删除当前结点”的目的第二个问题 : 记录下当前结点的下一个结点的下一个结点,
2015-08-28 14:32:06 535
原创 3.2 电话号码对应的英语单词
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析一个数字, 对应一个字符数组, 这个问题其实就是穷举出这个数字数组能够表示的所有的字符的拼凑, 然后找出为单词的序列 这里 我只做了穷举 “数字数组 -> 字符序列”解法 : 使用一个pos数组, 来表示使用第i个数字的第pos[i]个字符, 然后设计一个累增的方法来控制pos的增长, 至于迭代方式 可以选用循环, 也可以
2015-08-27 18:24:46 537
原创 07 java.lang.StringBuilder
StringBuilder 2015.01.15 By 970655147如果大家有过字符串拼接的经验的话, 可能对于这个类不会陌生, 因为直接使用String拼
2015-08-26 22:43:08 600
原创 06 java.lang.AbstractStringBuilder
AbstractStringBuilder 2015.01.15 By 970655147这个类是StringBuider, StringBuffer 的基类,
2015-08-26 22:20:46 1207
原创 3.1 字符串移位包含问题
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析解法一 : 迭代arr.length 次, 每次比较arr中是否包含目标字符串, 如果不包含, 则右移一位, 继续循环, 否则 跳出循环 返回true解法二 : 如果目标字符串是arr的循环移位子字符串, 那么目标字符串必定是 arr + arr, 的子字符串 当然在进入方法的时候, 需要对目标字符串 和arr的长度进行校
2015-08-26 21:51:28 586
原创 2.19 区间重合判定
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析解法一 : 遍历目标区间, 从源区间中依次减去目标区间的区间段, 如果最后源区间还存在数据, 则说明源区间不是完全在目标区间中解法二 : 首先归并目标区间的各个可以归并的区间段, 然后在采用思路一的方案, 遍历目标区间现在的区间段(们), 如果最后源区间还存在数据, 则说明源区间不是完全在目标区间中4. 代码/** * f
2015-08-26 21:30:04 912
原创 05 java.lang.String
String 2015.01.14&15 By 970655147这个类, 相信是java中用到的最多的一个类了吧, 任何地方都有他的踪迹, 比如你要打印数据到控
2015-08-25 22:39:02 643
原创 2.18 数组的分割
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析书中给出了两种思路, 书中的第二种解法和第三种解法都是依赖于第二种思路 解法一 : 将数组分为left, right 两部分, 然后再启发式的交换两边的元素, 这样做的优势是在于交换的次数比较少, 而缺陷在于left 和right 两边的和的delta可能不为最小解法二 : 计算出任意i个元素之和为k的可能情况, 然后在从
2015-08-25 21:36:43 496
原创 2.17 数组循环移位
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于 这个问题, 书中给出了两种思路 解法一 : 将移动的位数模上数组的长度, 获取最后需要移动的位数[得到移动位数k], [因为移动的位数, 可能大于数组的长度], 然后在循环k次, 每次向右移动一位解法二 : 相对于第一种解法来说, 巧妙的多, 模上数组的长度, 计算出真是需要移动的位数[得到移动位数k], 然后逆转[
2015-08-25 20:31:57 482
原创 04 java.lang.Byte
Byte 2015.01.11 By 970655147byte简单类型的封装类型, 不是很难, 主要将一些逻辑委托给了Integer 处理start ->声明,
2015-08-24 22:44:11 724
原创 2.16 求一个数列的最长递增子序列
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于这种求优问题, 最基本的思路, 无疑便是穷举了 解法一 : 使用一个incSeq数组存放包含第i个数之前的最长的递增子序列的长度, 将每一个位置的最长递增子序列长度初始化为1, 然后遍历一次数组[循环变量为n], 在遍历的过程中再一次遍历incSeq (0, curN)[循环变量为i], 如果当前数大于arr[i],
2015-08-24 22:25:47 2801
原创 03 java.lang.Boolean
Boolean 2015.01.10 By 970655147这就是传中中值域只有两个的Boolean, 这个封装类是挺简单的start ->声明, 大家可以看看
2015-08-20 21:13:28 568
原创 2.15 求二维数组的子矩阵的最大和
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于这种求优问题, 最基本的思路, 无疑便是穷举了 所以 我们这里三种思路, 均为穷举。。。 解法一 : 穷举左上角的点, 然后在穷举所有可能该宽高, 计算矩阵的和, 统计最大值 解法二 : 穷举左上角的点, 然后在穷举所有可能该宽高, 计算矩阵的和, 通过预处理一些数据, 是的这个计算时间复杂度降到O(1) 解法三
2015-08-20 20:58:24 1000
原创 2.14 子数组之和的最大值
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于这种求优问题, 最基本的思路, 无疑便是穷举了 解法一 : 使用left, right 确定一个边界, 然后求解left, right 之间的和, 如果和大于max, 则更新max, 穷举所有的left, right, 最后max即为所求 解法二 : 注意到上面left, right, 求和 会构成一个三层循环, 而
2015-08-20 20:03:33 554
原创 02 java.lang.Integer
Integer 2015.01.05&06&10 By 970655147这个Integer的设计, 个人觉得还是非常有必要了解一下的, 后半部分的api, 涉及很多巧妙的位操作
2015-08-19 21:39:25 698
原创 2.13 子数组的最大乘积
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于这个问题, 我们的通常的思路, 可能是就计算出所有的数字的乘积, 然后在遍历数组逐个除以当前元素, 找出所有子数组的最大值, 但是很遗憾, 这里限制了不能使用除法。。呵呵 别人知道你会这样想,, 解法一 : 使用两个辅助的数组, 遍历数组一次, 计算出start, end数组, start数组中元素表示数组中当前元素之
2015-08-19 21:05:17 450
原创 2.12 找出数组中和为给定的值的两个数字
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于这个问题, 我们常规的思路无非又是百无一变的穷举。。 解法一 : 穷举, 穷举出数组中任意两个数字的组合, 然后判断二者之和是否为给定的值 解法二 : 先将数组进行排序, 然后遍历所有小于 (给定的值/ 2), 如果在另一半中能够找到 (给定的值 - 当前值), 那么则说明, <当前值, 给定的值 - 当前值> 即为
2015-08-19 20:31:52 578
原创 00 声明
这一系列的文章, 为本人, 分析一些源码所得, 其中可能参考了一些网友的思路, 但是由于忘记了, 所以不便声明出处了, 请见谅这一系列的文章, 能够当做一本字典来查就可以了, 需要的时候, 来看看即可注 : 因为作者的水平有限,必然可能出现一些bug, 所以请大家指出!
2015-08-18 21:17:56 438
原创 01 java.lang.Object
Object 2015.01.14 By 970655147/ * 哎哟, 卧槽, 不得不吐槽一句, 这csdn的markDown编辑器, 能在我切换到其他播客的时候, 帮我保存之前的内容到草稿箱一下么, 这
2015-08-18 21:13:40 399
原创 2.10 寻找数组中的最大值和最小值
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于这个问题, 我们最常规的思路, 就是 : 解法一 : 就是遍历一次数组, 如果当前元素, 比max大, 或者比min小, 则记录下其值, 通过这样依次遍历, 即找出了数组的最大值和最小值, 这样比较了 (2 * n)次 解法二 : 首先遍历一次数组, 两个相邻的数一组[(0, 1), (2, 3), … ], 将
2015-08-18 20:39:13 770
原创 2.9 Fibonacci数列
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析这个问题, 也是一个经典的问题, 但是通常, 我们看到的解法大概就是递归思路, 以及循环的思路两种, 这里给出了一个巧妙的解法, 利用矩阵相乘的性质, 来求解fibonacci 数列 解法一 : 常规的递归思路, 递归退出条件为n 为0 或者1 解法二 : 因为fibonacci的递归思路, 中实际上存在很多的重复计算,
2015-08-18 20:09:58 462
原创 2.8 找出整除n的只有0, 1的数
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析这个问题主要 给定一个n, 然后寻找最小的能够整除n, 的并且只含有0, 1 的十进制数 解法一 : 穷举 0, 1, 10, 11, 100, 101, 110, 111, … 解法二 : 缓存<余数, 除以n余数为键的最小的整数>, 使用一个num计数, num从1开始, 每次迭代num*10, 遍历缓存表[遍历所有
2015-08-17 22:17:28 539
原创 2.8 寻找符合条件的数
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析这个问题主要 给定一个n, 然后寻找最小的能够整除n, 的并且只含有0, 1 的十进制数 解法一 : 穷举 0, 1, 10, 11, 100, 101, 110, 111, … 解法二 : 缓存<余数, 除以n余数为键的最小的整数>, 使用一个num计数, num从1开始, 每次迭代num*10, 遍历缓存表[遍历所有
2015-08-17 22:09:17 467
原创 05 魔方
1. 前言这个题是当初要面试的时候,在一个网友的播客中看到的面试题, 当时也比较感兴趣, 于是 当时就把这个模拟的数据结构写好了 这个实际上写了已经很久了,所以可能注释, 代码风格等信息可能不是那么的好看设计思路 : 这个不难模拟, 但是比较烦, 有兴趣的网友也可以试一下, 比较重视细节的, 稍不注意, 就要狠狠的找了元素介绍 假设魔方的6个面为 顺时针 1, 3, 2, 4, 顶上为5, 底
2015-08-17 19:08:22 555
原创 2.6/ 7 精确表示浮点数 + 最大公约数
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析这个问题, 说白了, 就是将小数表示转换为分数表示 小数表示 => 分数表示 对于有限不循环小数, 可以直接令分子分母同时乘上(10^小数位数), 比如 : 0.234, 可以将其视为(0.234/ 1), 然后分子分母同时乘以1000, 得到(234/ 1000), 然后在化简即为所求 对于无限循环小
2015-08-16 18:39:21 727
原创 2.5 寻找最大的k个数
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析这道题是一道非常经典的题目, top k 因此解法也多种多样, 但是各有优劣 解法一 : 先将这n个数升序排序[这里选取olog(n)的快速排序], 然后找出[n-k, n), 即为所求 解法二 : 部分排序, 获取最大的k个数, 可以采用冒泡, 插入,简单选择排序, 等等 解法三 : 随机找出一个元素作为枢轴, 然
2015-08-15 21:08:20 450
原创 2.4 1的数目
1. 前言本文的一些图片, 资料 截取自编程之美2. 问题描述3. 问题分析对于第一个问题 书中给出了两种算法 第一种 : 遍历一次1-n 统计出每一个数的出现的1的次数, 然后累加起来 第二种 : 利用数学方法找出规律, 然后计算 [呵呵, 一看就知道经过仔细思考过的算法效率高的多]现在以 113为例解释一下第二种算法 1-113 中1出现的次数 = 1-113中[个位为1的数字的个数 +
2015-08-12 21:25:30 464
原创 04 迷宫寻路
1. 前言这个游戏的经典程度就不用说了吧,相信大家都玩过,而且在学习之初说不定也都还写过呢, 这个实际上写了已经很久了,所以可能注释, 代码风格等信息可能不是那么的好看设计的思路 : 因为当时在写这个程序的时候, 并没有了解A* 算法, dijkstra算法[看过, 但是没有用过], 所以当时使用的是dfs, 深 + 盲 搜, 如果条件稍差, 则可能遍历整个图, 所以寻路的效果就不是那么好了,
2015-08-11 21:31:15 685
原创 2.3 寻找"水贴王"
1. 前言本文的一些图片截取自编程之美2. 问题描述3. 问题分析对于这个题目, 书上给出了三种思路 第一种 : 先遍历一次所有的帖子, 统计出 <发帖人, 发帖次数>, 然后在遍历一次映射, 找出发帖次数超过一半的发帖人 即为所求 第二种 : 将所有的id[包括重复]进行排序, 然后最中间的id即为所求 第三种 : 逐渐减小问题的规模的算法, 每一次删除两个不同的id, 那么剩下的id列表中
2015-08-11 20:38:15 992
原创 2.2 阶乘中的问题
1. 前言本文的一些图片截取自编程之美2. 问题描述3. 问题分析对于 第一个问题, 如果n比较小, 我们还能硬着头皮算, 但是如果n到达了一定的大小, 这个计算量是非常大的, 所以,我们需要利用数学知识找出其中的规律 根据上上面的分析, 我们只要计算出1-n 中能够分解出质因数5的个数即可 下面的代码中, 思路二, 优化了求质因数5的个数的计算对于 第二个问题 思路一 : 思路二 :
2015-08-11 20:13:39 853
原创 03 推箱子
1. 前言这个游戏的经典程度就不用说了吧,相信大家都玩过,而且在学习之初说不定也都还写过呢, 这个实际上写了已经很久了,所以可能注释, 代码风格等信息可能不是那么的好看设计的思路 : 无非向前面一样, 就是用户操作改变数据model, 然后在更新在panel上面 需要注意是 : 1. 可推动元素的移动 [需要判断其下一个位置是否可移动] 2. 可推动元素移
2015-08-10 20:54:03 652 2
原创 2.1 二进制中1的个数
1. 前言本文的一些图片截取自编程之美2. 问题描述3. 问题分析这个问题就是给定一个8个0/ 1, 然后求解其中1的个数书上给出了五种思路 第一种 : 将这个数模上2, 如果结果为1, 则说明最后一位为1, counter++, 然后再将这个数除以2, 直到这个数为0, counter即为所求 第二种 : 利用位操作优化上面的算法, 思路基本一致, 优化了求模 和除法 第三种 : 通过((
2015-08-10 19:30:41 392
原创 1.5 快速找出故障的机器
1. 前言本文的一些图片截取自编程之美2. 问题描述3. 问题分析对于第一个问题, 书中给出了几种算法 第一种 : 遍历一次机器列表, 然后统计出 机器的id, 和出现的次数的映射4. 代码/** * file name : Test01FindBadMachine.iava * created at : 8:43:20 AM May 12, 2015 * created by 970655
2015-08-09 21:07:39 561
原创 1.3 翻烙饼问题
1. 前言本文的一些图片截取自编程之美2. 问题描述3. 问题分析 书上提供了两种思路 一种 : 就是每一次用两次交换将当前最大的烙饼翻到最下面 另一种 : 是递归穷举, 上界为上面的分析出的(2 * (n - 1)) 但是, 我这里并没有实现递归穷举的算法, 我这里实现的另一种思路是 : 将相邻的有序的数字(们), 一起翻转, 但是从效果上来看,貌似这个思路, 和第一个思路相差不大呀
2015-08-09 19:46:43 976
原创 1.2 将帅问题
1. 前言本文的一些图片截取自编程之美2. 问题描述3. 问题分析我们先将这个问题换个方式表现出来 如下图, 我们假设将 & 帅的方位如下, 0-8 表示各个位置 从图中,我们可以看出, 只要((将的位置%3) == (帅的位置%3) ), 那么这将帅就照面了 我们需要求的是将帅不照面的情况, 所以我们需要的是((将的位置%3) != (帅的位置%3) )因为要求我们只是用一个变量, 所以 必
2015-08-09 16:29:05 521
原创 02 俄罗斯方块
1. 前言 这个游戏的经典程度就不用说了吧,相信大家都玩过,而且在学习之初说不定也都还写过呢, 这个实际上写了已经很久了,所以可能注释, 代码风格等信息可能不是那么的好看设计的思路 : 注意各个”形状”的设计, 绘制, 以及形状的切换, 还有出现可消除的行的时候, 进行行的消除元素介绍 : 墙 : 障碍物, 到达墙边, 方块就不能够在移动了 方块 : 我们控制的元素, 将其拼凑成完整的一
2015-08-09 14:08:20 517
jface.text3.9 - Src & Bin
2015-10-14
1个路由器配置一个子网的dhcp服务+2个路由器配置dhcp服务器+dhcp中继器配置两个子网的dhcp服务
2024-06-10
vue 实现的贪吃蛇 实现了自动导航
2022-10-22
html + js 实现的贪吃蛇 实现了自动导航
2022-10-22
Test24StringInConstantsPool.java.zip
2021-11-21
hsdis-amd64.dll 动态库
2018-11-03
mybatis-springMapper太多导致StackOverflow_StackTrace
2018-10-14
my-carousel
2018-09-02
有偿,云计算解决方案
2024-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人