算法面试题集
文章平均质量分 93
《剑指offer》,《程序员面试金典》等面试题集锦。
ATFWUS
电子科技大学硕士,CSDN博客专家。曾在两家top互联网大厂及一家央企工作,拥有丰富的工程实践经验,热爱技术的开源与分享。关注我,一起在计算机的海洋里系统化的学习!(本博客简介见个人主页或博客简介专栏)
展开
-
打印矩阵问题
打印矩阵问题是这样一个问题:以顺时针或者逆时针的方式打印整个矩阵。因为这个打印的顺序和我们经常遍历矩阵的顺序完全不同,所以初次面对这个问题时,看似比较困难,但是仔细一想,解法又会非常多的,是一道不错的面试题(前提是以前没有做过)。...原创 2022-08-10 21:13:22 · 605 阅读 · 0 评论 -
【面试算法题】除自身以外数组的乘积--简单问题如何用最佳的方式处理?
0x01.问题给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示: 题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。来源:力扣(LeetCode)0x02.假如这是面试题,你如原创 2020-06-04 18:28:00 · 509 阅读 · 0 评论 -
2020最新-精选基础算法100题(面试必备)
0x01.概述作为一个程序员,算法能力必不可少,虽然不一定是算法工程师,但是算法还是彰显着个人的编码能力,面试中也经常会被问到,甚至会被要求临场做算法题,所以,还是好好积累吧。个人其实对算法挺有兴趣的,从3月份开始,陆陆续续刷了一些算法题,把一些有意义的记录下来了,也顺便写了一些题解,个人认为,还是挺有收获的。之前写了一篇算法文章的目录,不过后来就忘了实时去更新了,于是现在,想把之前做过的一些有意义的算法题分享出来,刚好整理了100篇比较有意义的。希望对大家有所帮助。0x02.说明关原创 2020-05-18 19:58:16 · 290584 阅读 · 24 评论 -
《剑指offer》栈的压入、弹出序列(尝试序列?)
0x01.问题输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,...原创 2020-05-01 09:38:42 · 708 阅读 · 0 评论 -
判定是否互为字符重排--三种思路
0x01.问题给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。程序员面试金典 01.020x02.多维思路分析思路一:使用一个数组,记录字符的出现位数,若出现不相等的情况就返回false。bool CheckPermutation(string s1, string s2) { if(s1.size()!=s2...原创 2020-03-30 14:33:11 · 1053 阅读 · 2 评论 -
判定字符是否唯一 -- 位运算
0x01.问题实现一个算法,确定一个字符串 s 的所有字符是否全都不同。0x02.简要分析这是一个简单的问题,解决的办法比较多,比如双循环呀,利用C++的STL呀,或者使用各种标志容器记录呀,这里给出一种标志容器的方法:bool isUnique(string astr) { vector<int> map(26,0); for(char a:astr){ ...原创 2020-03-30 12:43:52 · 1538 阅读 · 0 评论 -
《剑指offer》:数组中数字出现的次数--分组异或
0x01.问题一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。2 <= nums <= 10000。示例 1:输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [...原创 2020-04-28 08:51:10 · 877 阅读 · 0 评论 -
数组中的逆序对--归并中的计数(分治)
0x01.问题在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。0 <= 数组长度 <= 50000输入: [7,5,6,4]输出: 5来自《剑指offer》public int reversePairs(int[] nums)0x02.解决思路看问题,并不复杂,对于每一个数,只需要找出后...原创 2020-04-24 09:00:33 · 861 阅读 · 0 评论 -
约瑟夫环--通俗易懂的巧解
0x01.问题N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。求幸存者的编号。0x02.详细分析约瑟夫环最容易想到的就是模拟,可以普通的用数组模拟,也可以用循环链表,用数组模拟的代码如下:int lastRemaining(int n, int m) { vector<int> base(n, 1); m=m%n; in...原创 2020-03-30 10:16:00 · 1842 阅读 · 0 评论 -
礼物的最大价值--dp的一步步优化
0x01.问题在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值...原创 2020-03-28 20:12:03 · 2010 阅读 · 0 评论 -
数值的整数次方--一道题培养你的严密思维
0x01.问题实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数。同时不需要考虑大数问题。此题来源于《剑指offer》面试题这个题很具魔性,你准备好了嘛?前方高能!!! 快快对号入座吧!0x02.First blood – :正?小伙伴,你是否觉得这道题很简单?于是在三十秒内写出了下列的代码...原创 2020-03-27 20:54:14 · 17971 阅读 · 2 评论 -
0~n-1中缺失的数字--二分法
0x01.问题一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。输入示例: [0,1,2,3,4,5,6,7,9]输出示例:8C++函数形式: int missingNumber(vector<int>& nums) 0x02.简要分析这...原创 2020-03-27 17:17:52 · 662 阅读 · 0 评论 -
1~n整数中1出现的次数--最高效率的解法
0x01.问题输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。1 <= n < 2^31C++函数形式: int countDigitOne(int n) 0x02.详细分析初看这个问题感觉比较简单,但细细想想,越想发现越难,因为这个数可能很大,暴力枚举肯定...原创 2020-03-26 21:54:28 · 1147 阅读 · 0 评论 -
求 1+2+...+n --有趣的短路原则
0x01.问题求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)C++函数形式为intsumNums(intn)0x02.问题分析本来是一个很简单的问题,但是加上不准使用这些语句的限制,瞬间就变得有些艰难。我们来思考,不能用循环,也不能用乘除,怎么完成累加得过程呢?这个...原创 2020-03-16 11:17:34 · 18427 阅读 · 0 评论