
Java面试算法
子路灬
这个作者很懒,什么都没留下…
展开
-
【算法基础】DFS凑数
从给定的数组arr中选取一个或多个数能否凑出给定的k?源代码 package com.javakk.ex;import java.util.Scanner;/** * @Time 2018年8月29日 下午5:43:06 * @Title { 凑数K } * @Desc { 用给定的一个或多个数能否凑出给定的k } * @Email 92920@sohu.c...原创 2018-08-30 16:28:42 · 1772 阅读 · 0 评论 -
【算法基础】找到被指的新类型字符
新类型字符是指:长度为1或2的字符串,表现形式只能为单个小写字母、大写字母+小写字母、大写字母+大写字母,三种形式,给定的字符串str由若干个新类型字符组成,问给定位置K上的新类型字符是?思路: * 一. 可以从左到右遍历str,按照题目规则,将str拆分,然后根据k所在位置输出 * 二. 观察题目发现 * ...原创 2018-08-31 14:28:43 · 419 阅读 · 0 评论 -
【算法基础】不用额外变量交换两个变量的值
不用额外变量交换a和b的值* 思路: * 记 a ^ b 为 c * 那么 c ^ b = a , c ^ a = b 源代码 package com.javakk.ex1;/** * @Time 2018年8月31日 上午9:39:42 * @Title { 不用额外变量交换a和b的值 } ...原创 2018-08-31 14:18:18 · 613 阅读 · 0 评论 -
【算法基础】转圈打印矩阵
给定的matrix矩阵,由内而外转圈打印元素核心思想:将矩阵分圈、再循环打印 package com.javakk.ex;/** * @Time 2018年8月30日 下午3:44:17 * @Title { 转圈打印矩阵 } * @Desc { 给定的matrix矩阵,由内而外转圈打印元素 } * @Email 92920@sohu.com * @Author ...原创 2018-08-31 14:14:38 · 717 阅读 · 0 评论 -
【算法基础】顺时针旋转矩阵
将给定的矩阵matrix顺时针旋转90°* 思路: * 将matrix分为一圈一圈的小圈 * 顺时针旋转其实就是每圈中各个元素依次占位 package com.javakk.ex;/** * @Time 2018年8月30日 下午3:02:20 * @Title { 旋转矩阵 } * @Desc { 将给定的矩阵ma...原创 2018-08-31 14:14:24 · 3523 阅读 · 0 评论 -
【算法基础】需要排序的最短子数组长度
给定一个无序数组arr,求出需要排序的子数组长度 * 思路: * 先从右到左遍历数组 * min : 出现的最小元素 * noMinIndex : 出现无序(cur > min)时的位置 * 再从左到右遍历数组 * max : 出现的最大元素 ...原创 2018-08-30 16:52:15 · 639 阅读 · 0 评论 -
【算法基础】在已排序的矩阵中找数
给定的矩阵matrix从左到右,从上到下一次递增,问K是否在matrix中时间复杂度 O(M+N) * 思路: * 从matrix的右上角或者左下角cur开始搜索 * 如果cur > k 说明只能在左边搜 * 如果cur < k 说明只能在下边搜 * 如果cur ...原创 2018-08-30 16:51:17 · 465 阅读 · 0 评论 -
【算法基础】奇数下标都是奇数,偶数下标都是偶数
给定长度不小于2的数组,输出调整后的数组,额外空间复杂度O(1)思路: even : arr最左边的偶数下标 old : arr最左边的奇数下标 不断检查arr的最后一个数,如果是偶数则和even交换,even+=2,如果是奇数则和old交换,old+=2,直到even或者old大于或等于N源代码 ...原创 2018-08-30 16:50:01 · 1483 阅读 · 0 评论 -
【算法基础】子数组的最大累加和
给定数组arr求出子数组的最大累加和,额外空间复杂度O(1)* 思路: * cur : 当前累加值 * 如果cur<0则不可能作为结果返回,cur取0 源代码 package com.javakk.ex;/** * @Time 2018年8月30日 上午11:12:33 * @Title { 子数组的最大...原创 2018-08-30 16:45:37 · 428 阅读 · 0 评论 -
【算法基础】不包含本位置值的累乘的两种解法
给定一个arr,返回不包含本位置的累乘数组,除需要返回的结果数组,额外空间为O(1) 【升级】给定一个arr,返回不包含本位置的累乘数组,除需要返回的结果数组,额外空间为O(1),不能使用除法 * 思路: * 计算出arr中0的个数count和非0的累乘值all * 如果count为0,则res[i] = all / arr...原创 2018-08-30 16:44:38 · 245 阅读 · 0 评论 -
【算法基础】从N个数中等概率打印M个数
相同的数不打印,额外空间复杂度为O(1)* 思路: * 在[0,N-1]中获得一个随机数a,并打印arr[a] * 将arr[a]与arr[N-1]交换 * 在[0,N-2]中获得一个随机数b,并打印arr[b] * 将arr[b]与arr[N-2]交换 * ...原创 2018-08-30 16:39:52 · 373 阅读 · 0 评论 -
【算法基础】数组的partition调整升级
相同问法:给定一个数组arr,其中只可能含有0,1,2请排序相同问法:给定一个数组arr,其中只可能含有红球、黄球、蓝球请实现红球放左边、黄球放中间、蓝球放右边 * 思路: * 将结果分为三个区域A、B、C * left : A区域最右端 * index : 从左到右遍历 * ri...原创 2018-08-30 16:38:27 · 304 阅读 · 0 评论 -
【算法基础】数组的partition调整
给定有序数组arr,调整arr使得它的左半部分升序且不重复 思路: u : 左边的最后位置 i : 从左到右遍历 当arr[i]和arr[u]不相等时,说明升序了,此时调换arr[u+1]和arr[i]源代码package com.javakk.ex;import java.util....原创 2018-08-30 16:35:48 · 432 阅读 · 0 评论 -
【算法基础】判断回文数
用户输入一个32位以内的整数,判断该数是否为回文数注意:负数也可以是回文* 思路: * 整数的最小负数不能转为正整数 * 取help和n相同位数 * 如果首位 (n / help) 与末位 (n % 10) 不相等返回false * n去掉首位和末位 (n % help) / 10...原创 2018-08-30 16:33:34 · 478 阅读 · 0 评论 -
【算法基础】括号字符串的有效性和最长有效长度
给定字符串str,如果str中含有'('、')'以外的字符直接返回false,否则检验str的所有括号是否匹配[升级]给定字符串str,如果str中含有'('、')'以外的字符直接返回false,否则检验str的所有括号是否匹配,并输出最大有效长度 思路: * 从左到右遍历str,如果遇到其他字符直接返回false * 遇到'(...原创 2018-08-31 15:09:42 · 765 阅读 · 0 评论