
面试算法
文章平均质量分 62
面试算法
Reset‘
这个作者很懒,什么都没留下…
展开
-
判断一个链表是否为回文结构
【题目】给定一个链表,请判断该链表是否为回文结构。【输入】n 表示链表的长度ai 表示链表的各个节点的值。【输出】如果为回文结构输出 "true" , 否则输出 "false"。【示例】输入:41 2 2 1输出:true【备注】【解法1】利用stack将整个链表入栈,然后出栈判断public static boolean isPalindrome1(Node head) { Stack<Node> ...原创 2022-01-16 17:48:40 · 298 阅读 · 0 评论 -
荷兰国旗问题
【题目】难度:1星给定一个整数数组,给定一个值K,这个值在原数组中一定存在,要求把数组中小于K的元素放到数组的左边,大于K的元素放到数组的右边, 等于K的元素放到数组的中间,最终返回一个整数数组,其中只有两个值,分别是等于K的数组部分的左右两个下标值。(把一组数据按一个标志分成三份,左边的都小于标志数,中间的都等于标志数,右边的都大于标志数)【代码】package test;import java.util.*;public class Main{ public.原创 2022-01-15 12:32:09 · 129 阅读 · 0 评论 -
计算数组的小和
【题目】难度:3星数组小和的定义如下:例如,数组 s = [1, 3, 5, 2, 4, 6] ,在 s[0] 的左边小于或等于 s[0] 的数的和为 0 ; 在 s[1] 的左边小于或等于 s[1] 的数的和为 1 ;在 s[2] 的左边小于或等于 s[2] 的数的和为 1+3=4 ;在 s[3] 的左边小于或等于 s[3] 的数的和为 1 ;在 s[4] 的左边小于或等于 s[4] 的数的和为 1+3+2=6 ;在 s[5] 的左边小于或等于 s[5] 的数的和为 1+3+5+2+4=15原创 2022-01-15 11:07:59 · 706 阅读 · 0 评论 -
算法常用技巧
目录交换两个数的异或方法:2的n次方的移位算法判断偶数:计算中值的方法master公式交换两个数的异或方法:注意:这种运算的前提是要交换的两个对象ab的地址不同arr[a] = arr[a] ^ arr[b]arr[b] = arr[a] ^ arr[b]arr[a] = arr[a] ^ arr[b]2的n次方的移位算法2^n == 1<<n(2^5) ==1<<5判断偶数:(newArr.length & 1)原创 2024-07-08 21:54:40 · 327 阅读 · 0 评论 -
异或运算的相关算法:找到数组中出现奇数次的数
【题目】给一个数组arr,其中只有一个数出现了奇数次,其它数出现了偶数次,打印这个数。【输入】输出包含两行,第一行包含一个整数n(1 \leq n \leq 10^5)(1≤n≤105),代表数组arr长度,第二行有n个数,代表数组arrarr_i 为32位整数arri为32位整数。输出包含两行,第一行包含一个整数n(1 \leq n \leq 10^5)(1≤n≤105),代表数组arr长度,第二行有n个数,代表数组arrarr_i 为32位整数arri为32位整数。【输出】.原创 2022-01-13 11:30:09 · 777 阅读 · 0 评论 -
求最长的回文子序列(动态规划,区间问题)
问题描述:给定一个字符串str,求最长的回文子序列。注意区分子序列和子串的不同。样例:输入:ab321aw123输出:321a123解题思路:首先根据题意,该题属于范围上尝试的模型,尝试用动态规划来解题,首先构建出二维表行表示 i ,列表示 j ,a[i][j]表示从i索引到 j 索引上的最长回文子序列ab321aw123 0 1 2 3 4 5 6 7 8 9 0 1 1 1 .原创 2021-11-12 11:37:16 · 469 阅读 · 1 评论 -
给定数组表示体重的渡河问题
问题描述:给定一个数组arr,长度为N且每个值都是正数,代表N个人的体重。再给定一个正数limit,代表一艘船的载重。以下是坐船规则,1)每艘船最多只能做两人;2)乘客的体重和不能超过limit。返回如果同时让这N个人过河最少需要几条船。样例:输入:{6,3,3,2,4,5,1} 6输出:4【1,5】【2,4】【3,3】【6】解题思路:解法一(左神解法):首先过滤整个数组,先用基数排序(O(n))排序,然后分三种情况:如果数组中存在比limit还大的数,那么...原创 2021-11-12 11:07:09 · 560 阅读 · 0 评论 -
[A...Z]的k伪进制问题
问题描述:一个 char 类型的数组 chs,其中所有的字符都不同。 例如,chs=['A', 'B', 'C', ... 'Z'],则字符串与整数的对应关系如下: A, B... Z, AA,AB...AZ,BA,BB...ZZ,AAA... ZZZ, AAAA... 1, 2...26,27, 28... 52,53,54...702,703...18278, 18279...给定一个数组 chs,实现根据对应关系完成字符串与整数相互转换的两个函数。样例:输入:chs=['A'原创 2021-11-11 10:16:33 · 416 阅读 · 0 评论 -
返回所有子数组中所有元素相加和小于等于k的最长子数组长度。(滑动窗口,元素可0可负进阶问题)
问题描述:给定一个数组 arr,该数组无序,但每个值均为正数,再给定一个正数 k。求 arr 的所有子 数组中所有元素相加和为 k 的最长子数组长度。要求:时间复杂度O(N),额外空间复杂度O(1)输入:arr=[1,2,1,1,1]输出:k=3累加和为 3 的最长子数组为[1,1,1],所以结果返回 3。解题思路:利用滑动窗口解决问题起始窗口内只有第一个数,判断第一个数和k的大小。 如果窗口内的数字的和大于k,则需要将窗口左边界向右移,继续比较 如果窗口内的数.原创 2021-11-06 12:12:03 · 434 阅读 · 0 评论 -
求大楼整体轮廓线的数组
问题描述:给定一个 N×3 的矩阵 matrix,对于每一个长度为 3 的小数组 arr,都表示一个大楼的三个数 据。arr[0]表示大楼的左边界,arr[1]表示大楼的右边界,arr[2]表示大楼的高度(一定大于 0)。 每座大楼的地基都在 X 轴上,大楼之间可能会有重叠,请返回整体的轮廓线数组。 样例:输入:matrix = { {2,5,6}, {1,7,4}, {4,6,7}, {3,6,5}, {10,13,2}, {9,11,3}, {12,原创 2021-11-06 10:58:00 · 359 阅读 · 1 评论 -
公司招聘问题(约瑟夫环升级版)
题目:某公司招聘,有n个人入围,HR在黑板上依次写下m个正整数A1、A2、……、Am,然后让这n个人围成一个 圈,并按照顺时针顺序为他们编号0、1、2、……、n-1。录取规则是: 第一轮从0号的人开始,取用黑板上的第1个数字,也就是A1黑板上的数字按次序循环取用,即如果某轮用了第m个,则下一轮需要用第1个;如果某轮用到第k个,则下轮需要用第k+1个(k<m) 每一轮按照黑板上的次序取用到一个数字Ax,淘汰掉从当前轮到的人开始按照顺时针顺序数到的第Ax个人,下一轮开始时轮到的人即为被淘汰掉的原创 2021-11-04 12:40:23 · 521 阅读 · 0 评论 -
求两个有序数组的第k大的数
题目:给定两个一维int数组A和B. 其中:A是长度为m、元素从小到大排好序的有序数组。B是长度为n、元素从小到大排好序的有序数组。希望从A和B数组中,找出最大的k个数字,要求:使用尽量少的比较次数。解法:1.首先介绍上中位数的概念(算法原型)在编写判断上中位数的函数时,首先要保证两个数组的长度相同。1.1 当两个数组长度均为偶数时 eg:arr1 = {a,b,c,d}; arr2 = {e,f,g,h},求第4大的数当 b==f 时,有 b,f均为上中位数 ...原创 2021-11-04 12:02:33 · 721 阅读 · 0 评论