随笔分类 -  算法题目总结

摘要:这个问题跟上一个 大同小异,如何不重复打印呢? 首先保证选定三元数组中第一个值不重复,剩下的就跟前一个题目一样了。 阅读全文
posted @ 2017-09-07 10:50 toov5 阅读(357) 评论(0) 推荐(0) 编辑
摘要:给定一个排序数组arr 和整数 k, 在里面找到所相加为k的二元数组。 思路: 充分利用有序呀 二元数组嘛 可以两个指针 一个 left 一个right 不断向中间压缩 看看和与k的关系 然后移动相应的指针 阅读全文
posted @ 2017-09-07 10:30 toov5 阅读(410) 评论(0) 推荐(0) 编辑
摘要:如果一个数组在排序之后,每相邻两个数差的绝对值都为1,则该数组为可整合数组 方法一(通俗的做法) 考察每个子数组 > 复制成新数组 > 新数组排序 >验证是否符合 代码: 改进的方法: 加速验证过程,前方高能!!!!! 》》》》》》》》》 判断一个数组是否可是可整合, 如果 max-min+1= 元 阅读全文
posted @ 2017-09-06 19:36 toov5 阅读(341) 评论(0) 推荐(0) 编辑
摘要:给定一个NXM的整型矩阵,和一个整数K,每一行,每一列都是排好的。判断K是否在matrix中 反正上下已经排列好了 初始位置定在左上角,然后开始,比较 ==K 返回 <k 往下走 row++ >k 往左走 col-- 代码实现: 完整代码可以这么玩儿: 阅读全文
posted @ 2017-09-05 09:56 toov5 阅读(297) 评论(0) 推荐(0) 编辑
摘要:题目1 给定一个整型数组arr, 打印其中出现次数大于一半的数, 如果没有这样的数,打印提示信息 进阶 给定一个整型数组arr, 再给定一个整数K, 打印所有出现次数大于 N/K的数,如果没有这样的数字,打印提示信息 题目的思路是: 一般都思路是 哈希表记录每个数跟出现的次数,但是额外空间复杂度是O 阅读全文
posted @ 2017-08-26 21:20 toov5 阅读(727) 评论(0) 推荐(0) 编辑
摘要:给定一个无序数组arr,求出需要排序的最短子数组长度 例如: arr=[1,5,3,4,2,6,7] 返回4,因为只有[5,3,4,2]需要排序 介绍一种 左右遍历方法 左右夹击 确认长度 首先从 右往左遍历 记录最小值 如果arr[i] >最小值 那么 最小值的位置应该在arr[i]的左边 然后从 阅读全文
posted @ 2017-08-26 17:09 toov5 阅读(162) 评论(0) 推荐(0) 编辑
摘要:给定一个 N * N的矩阵,把这个矩阵调整成顺时针转动90度后的形式 要求额外空间复杂度为O(1) 这里仍然使用分圈处理方式 如果你愿意一层一层一层的拨开我的心~ 哈哈哈 由外到内的旋转 上代码一目了然: 随便抽查了几个数: 正方形的好做很多,正方形的题目比矩形的考虑维度少了一个,就是一行和一列时候 阅读全文
posted @ 2017-08-25 15:14 toov5 阅读(1634) 评论(0) 推荐(0) 编辑
摘要:给定一个整型矩阵matrix,用转圈方式打印它 要求额外空间复杂度:O(1) 这里介绍一种 矩阵处理方式, 矩阵分圈处理!!!!!! 思路: 在矩阵中庸左上角的坐标(tR, tC)和右下角(dR, dC)就可以表示一个子矩阵。 比如 当(tR, tC)=(0,0) (dR,dC)=(3,3)时, 表 阅读全文
posted @ 2017-08-23 20:25 toov5 阅读(175) 评论(0) 推荐(0) 编辑
摘要:题目描述: arr1 和 arr2 长度都为N 求两个数组中所有数的上中位数 要求 时间复杂度 O(logN) 额外空间复杂度O(1) 这道题目的方法比较好玩: 这两个数组如下表示: arr1[start1....end1] arr2[start2...end2] 如果start1==start2 阅读全文
posted @ 2017-08-23 10:56 toov5 阅读(753) 评论(0) 推荐(0) 编辑
摘要:给定两个不等于0的整数M和N,求M和N的最大公约数 辗转相除法 思路:如果q和r分别是m除以n的商及余数,即m=nq+r, 那么m和n的最大公约数等于n和r的做大公约数!(递归) 阅读全文
posted @ 2017-08-23 09:00 toov5 阅读(538) 评论(0) 推荐(0) 编辑
摘要:str1 和 str2 求str1 的子串 中含有str2 的所有字符的最小字串长度 例如: str1 ="abcde" str2="ac" 返回3 本题适合用还款方法 str1 去还 str2 里面的元素 阅读全文
posted @ 2017-08-22 21:03 toov5 阅读(2714) 评论(0) 推荐(0) 编辑
摘要:类似于 Ab DC e str="aaABCDEcBCg" k=7 Ec k=4 CD k=10 g 解题思路: 介绍一种最快最强的解题方法: 从 k-1 位置开始 向左统计连续出现的大写字母数量 int uNum 遇到小写字母就停止 如果 nNum为奇数, str[k..k+1]是被选中的新型字符 阅读全文
posted @ 2017-08-22 16:12 toov5 阅读(234) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串str, 返回str的最长无重复字符子串长度 例如 str="abcd' 返回4 str=“aabcb” 最长“abc” 返回3 解决本题的思路非常非常有趣,这种思路必须要学会: 本题目可以做到 时间复杂度O(N) str长度N 空间复杂度O(M) M是字符编码 根据字符编码 大小 申 阅读全文
posted @ 2017-08-22 11:24 toov5 阅读(439) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串 str, 判断是不是整体有效的括号字符串 str=“(())” true str=“()a()” false 进阶题目: 给定一个括号字符串str,返回最长的有效括号子串 首先原问题的解决思路: 各种判断: 遍历判断每个字符是不是“(” 或“)”,如果不是,false 遍历到每一个字 阅读全文
posted @ 2017-08-22 10:23 toov5 阅读(1110) 评论(0) 推荐(0) 编辑
摘要:尽可能使用二分查找 假设在 left right 之间查找 关键是mid处理过程 导致 left 跟 right 的改变 控制去哪里寻找 分如下情况: 若 mid处 不为空,并且 此处就是 str 那么记下 mid ,同时把right-1 (往左寻找) 若 mid处不为空,并且此处不是str,比较字 阅读全文
posted @ 2017-08-20 09:54 toov5 阅读(298) 评论(0) 推荐(0) 编辑
摘要:问题1、给定一个字符串str, 返回str的统计字符串, 例如: “aaabbadddffc”的统计字符串为“a_3_b_2_a_1_d_3_f_2_c_1” 进阶题目: 给定一个统计字符串cstr, 在给定一个整数inde 返回代表的字符 问题2、例如: "a_1_b_100" index=50的 阅读全文
posted @ 2017-08-19 16:52 toov5 阅读(557) 评论(0) 推荐(0) 编辑
摘要:给定三个字符串str from 和to,from中无重复字符串,把str中所有from的子串全部替换成to字符串,对连续出现from的部分要求只替换成一个to字符串,返回最终的结果字符串。 str = ”123abc“ from=”abc“ to="4567" 返回”1234567“ 解决本题的思路 阅读全文
posted @ 2017-08-19 13:58 toov5 阅读(361) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串str,如果str符合日程书写的证书形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0 str="123" 整体思路: 首先判断这个字符串的合法性 然后开始遍历 遍历时候一定要注意了: 32位整型,负数的绝对值 大于 整数的 绝对值 范围 遍历的 str=res*10 阅读全文
posted @ 2017-08-19 11:12 toov5 阅读(468) 评论(0) 推荐(0) 编辑
摘要:把一个字符串str 前面任意的部分挪到后面形成的字符串叫做str的旋转词 举例, a="cdab" b="abcd" 返回true a="1ab2" b="ab12" 返回false 解法很简单, 首先长度要一样 然后 生成一个大字符串b2 为两个字符串b拼在一起的结果 最后看看 b2中是否包含字符 阅读全文
posted @ 2017-08-16 22:01 toov5 阅读(354) 评论(0) 推荐(0) 编辑
摘要:字符串中刚好出现K个连续的‘O’,则把K个连续‘O’字符去除,返回处理后的字符串 比如 str="AOOOOOBOOO" k=3, 返回“AOOOOOB” 这个题的解决思路也有很多 重要的是,关键的是,如何从左到右便利str时,将正好有连续的K个‘0’字符串都找到 解题思路步骤 1 生成两个变量。 阅读全文
posted @ 2017-08-14 21:22 toov5 阅读(860) 评论(0) 推荐(0) 编辑