
程序员面试金典题目笔记
Allenlzcoder
拒绝拖延症!!!
展开
-
程序员面试金典——3.4汉诺塔
Solution1:典型的递归题。参考的清华大学郑莉老师的C++讲义中的答案。#include<iostream>using namespace std;//将src针最上面一个盘子移动到dest针上void move(char src, char dest) { cout << src << " --> " << dest ...转载 2018-10-10 01:24:51 · 447 阅读 · 0 评论 -
程序员面试金典——18.13 最大字母矩阵
程序员面试金典——18.13 最大字母矩阵在牛客网上把此题的难度给大大降低了。。。。。。。。。 Solution1: 参考网址:https://www.nowcoder.com/questionTerminal/270ff3b150704f8795fd4a944a7e043a 原题比较复杂,牛客网上给简化为求某个单词出现次数和长度的最大值了class AlphaMatrix {pu...转载 2018-05-06 11:10:30 · 346 阅读 · 0 评论 -
程序员面试金典——18.12最大和子矩阵
程序员面试金典——18.12最大和子矩阵Solution1: 参考网址: [1]https://www.cnblogs.com/GodA/p/5237061.html 思想讲的很清楚~ [2]https://www.nowcoder.com/profile/963612/codeBookDetail?submissionId=15224519 思路: 动态规划 我们来分析一下最...转载 2018-05-05 14:34:41 · 290 阅读 · 0 评论 -
【To Do】程序员面试金典——18.11最大子方阵
程序员面试金典——18.11最大子方阵Solution1:我的答案。最笨的方法,时间复杂度是O(n3)O(n3)O(n^3)class SubMatrix {public: int maxSubMatrix(vector<vector<int> > mat, int n) { //穷举法??复杂度有点高欧~ // write code he...原创 2018-05-04 13:56:48 · 390 阅读 · 0 评论 -
程序员面试金典——18.10字符串变换
程序员面试金典——18.10字符串变换Solution1:我的答案。穷举法,个人认为此题还是有点难度的。。。 利用了倒推法以及很高的时间复杂度才解决,并不值得推崇呀。class Change {public: int countChanges(vector<string> dic, int n, string s, string t) { ...原创 2018-05-04 11:15:40 · 319 阅读 · 0 评论 -
程序员面试金典——18.9实时中位数
程序员面试金典——18.9实时中位数Solution1:我的答案。利用排序,比较弱智。。class Middle {public: vector<int> getMiddle(vector<int> A, int n) { // write code here vector<int> res; ...原创 2018-05-03 10:59:38 · 442 阅读 · 0 评论 -
程序员面试金典——18.7最长合成字符串
程序员面试金典——18.7最长合成字符串参考网址:https://www.nowcoder.com/profile/2896594/codeBookDetail?submissionId=13543240 Solution1:一开始看这道题真是木有一点思路,别人家的思维真是妙妙妙啊~~~class LongestString {public: int getLongest(ve...转载 2018-05-03 09:26:13 · 311 阅读 · 0 评论 -
【To Do!】程序员面试金典——18.8子串判断
程序员面试金典——18.8子串判断Solution1:我的答案 利用了C++ STL中自带的find函数,有点投机取巧的意思,正统方法是用trie树(单词查找树)来做,那就麻烦了许多class Substr {public: vector<bool> chkSubStr(vector<string> p, int n, string s) { ...原创 2018-05-02 10:54:57 · 302 阅读 · 0 评论 -
程序员面试金典——18.4 2的个数
程序员面试金典——18.4 2的个数Solution1:经典通法,得牢记啊。。。 此题在《剑指offer》中出现过,里面分析的比较到位 https://blog.csdn.net/allenlzcoder/article/details/79619671class Count2 {public: int countNumberOf2s(int n) { // ...原创 2018-05-01 12:05:04 · 205 阅读 · 0 评论 -
程序员面试金典——18.5单词最近的距离
程序员面试金典——18.5单词最近的距离Solution1:我的答案,时间复杂度为O(n2)O(n2)O(n^2).class Distance {public: int getDistance(vector<string> article, int n, string x, string y) { // write code here ...原创 2018-04-30 23:22:07 · 202 阅读 · 0 评论 -
程序员面试金典——番外篇之下一个较大元素II
程序员面试金典——番外篇之下一个较大元素IISolution1:我的答案,时间复杂度为O(n2)O(n2)O(n^2)垃圾算法class NextElement {public: vector<int> findNext(vector<int> A, int n) { // write code here vecto...原创 2018-04-30 22:16:38 · 390 阅读 · 0 评论 -
程序员面试金典——番外篇之下一个较大元素I
程序员面试金典——番外篇之下一个较大元素ISolution1:我的答案,时间复杂度为O(n2)O(n2)O(n^2) 垃圾算法class NextElement {public: vector<int> findNext(vector<int> A, int n) { // write code here vector&l...原创 2018-04-30 22:10:48 · 266 阅读 · 0 评论 -
程序员面试金典——18.1另类加法
程序员面试金典——18.1另类加法Solution1:还是参考剑指上的思路。。class UnusualAdd {public: int addAB(int A, int B) { // write code here int sum = 0, carry = 0; do { sum = A^B; ...原创 2018-04-30 18:39:00 · 338 阅读 · 0 评论 -
【重点】程序员面试金典——17.13树转链表
程序员面试金典——17.13树转链表在《剑指offer》上有一个类似的题目:https://blog.csdn.net/allenlzcoder/article/details/79612488 参考网址:https://www.nowcoder.com/profile/3883678/codeBookDetail?submissionId=11971240 说实话,这三种解法的代码理解起...转载 2018-04-30 17:29:57 · 244 阅读 · 0 评论 -
程序员面试金典——17.12整数对查找
程序员面试金典——17.12整数对查找Solution1:针对重复数字的情况题目未做明确说明,虽然此题仍能AC,但有的重复数字用了1次,有的用了超过1次,要求不清晰。重点是这种前后双指针的方法要会!!!class FindPair {public: int countPairs(vector<int> A, int n, int sum) { // w...原创 2018-04-29 23:32:11 · 286 阅读 · 0 评论 -
程序员面试金典——17.9词频统计
程序员面试金典——17.9词频统计Solution1:我的答案。利用了STL中的map或者unordered_map结构,因为unordered_map是基于哈希结构实现的,所以更好一点。class Frequency {public: int getFrequency(vector<string> article, int n, string word) { ...原创 2018-04-29 18:07:27 · 337 阅读 · 0 评论 -
程序员面试金典——17.8最大连续数列和
程序员面试金典——17.8最大连续数列和Solution1:典型的动态规划题啊. 一遍过,哈哈哈class MaxSum {public: int getMaxSum(vector<int> A, int n) { // write code here int dp[n], max_sum = INT_MIN; mem...原创 2018-04-29 17:55:54 · 305 阅读 · 0 评论 -
程序员面试金典——17.7数字发音
程序员面试金典——17.7数字发音Solution1:我的答案。要AC这道题真不容易。。。细节注意太多class ToString {public: vector<string> Digit = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven&qu原创 2018-04-29 17:46:26 · 285 阅读 · 0 评论 -
程序员面试金典——17.6最小调整有序
程序员面试金典——17.6最小调整有序Solution1:我的答案。垃圾算法class Rearrange {public: vector<int> findSegment(vector<int> A, int n) { // write code here vector<int> temp = A, res(2...原创 2018-04-29 17:37:13 · 236 阅读 · 0 评论 -
程序员面试金典——17.3阶乘尾零
程序员面试金典——17.3阶乘尾零Solution1:我的答案。没有更笨的方法了。。。class Factor {public: int getFactorSuffixZero(int n) { // write code here int nums_2 = 0, nums_5 = 0; for(int i = 1; i <=...原创 2018-04-29 12:10:38 · 394 阅读 · 0 评论 -
程序员面试金典——17.5珠玑妙算
程序员面试金典——17.5珠玑妙算参考网址:https://www.nowcoder.com/profile/2708949/codeBookDetail?submissionId=13283364 Solution1:算法 从题目中可以获取隐含信息: “猜中” 属于 “伪猜中”,但是反过来不成立。 所有需要先统计猜中, 然后再统计伪猜中个数= 可能的伪猜中个数 - 猜中个数 因此...转载 2018-04-29 11:46:34 · 689 阅读 · 0 评论 -
程序员面试金典——17.4无判断max
程序员面试金典——17.4无判断max参考网址: https://www.nowcoder.com/practice/b0a82250677a4fabb0bc41053fa05013?tpId=8&tqId=11056&tPage=4&rp=4&ru=%2Fta%2Fcracking-the-coding-interview&qru=%2Fta%2Fc...转载 2018-04-29 10:13:51 · 271 阅读 · 0 评论 -
程序员面试金典——17.2井字棋
程序员面试金典——17.2井字棋参考网址:https://www.nowcoder.com/profile/9374962/codeBookDetail?submissionId=16441975 啥是井字棋?怎么着算赢?? 看完答案后发现:任意行、列、主对角线或副对角线全部是我方旗子便能获胜啊~ Solution1:针对3*3棋盘的算法class Board {public: ...转载 2018-04-29 09:18:37 · 353 阅读 · 0 评论 -
程序员面试金典——17.1无缓存交换
程序员面试金典——17.1无缓存交换主要是利用异或性质~ 程序员面试金典——17.1无缓存交换class Exchange {public: vector<int> exchangeAB(vector<int> AB) { // write code here if(AB.size() <= 1) ...原创 2018-04-27 11:11:17 · 249 阅读 · 0 评论 -
【重点】程序员面试金典——番外篇之数组中的逆序对
程序员面试金典——番外篇之数组中的逆序对此题曾多次遇到,然鹅还是本能的想起来复杂度为O(n2)O(n2)O(n^2)的笨蛋方法。。。 Solution1:笨蛋方法class AntiOrder {public: int count(vector<int> A, int n) { // write code here int sum...转载 2018-04-27 11:08:31 · 220 阅读 · 0 评论 -
【To Do!】程序员面试金典——11.8维护x的秩
程序员面试金典——11.8维护x的秩Solution1:我的答案。垃圾算法。。。class Rank {public: vector<int> getRankOfNumber(vector<int> A, int n) { // write code here int temp_sum = 0; vect...原创 2018-04-27 10:56:14 · 243 阅读 · 0 评论 -
程序员面试金典——11.7叠罗汉II
程序员面试金典——11.7叠罗汉IISolution1:动态规划,复杂度O(n2)O(n2)O(n^2)。 复杂度非最优,但思想易于理解且代码简练。 res[i]表示必须以i 元素结尾的最长递增子序列的长度, 如何得出这个长度呢? res[i]等于men[0,…,i - 1]中比men[i]小的元素对应的dp值 + 1 这也是在叠罗汉I中的solution1的思路class ...原创 2018-04-27 10:29:00 · 431 阅读 · 0 评论 -
【动态规划】程序员面试金典——11.7叠罗汉I
程序员面试金典——11.7叠罗汉I首先我来批判一下这个题目出的真是不咋滴,后来的人按理说应该在上面。但此题的意思是求最长递增子序列,即后来的人在下面,完全是为了出题而出题。。。 参考博客: [1]https://blog.csdn.net/sjt19910311/article/details/51439614 [2]https://blog.csdn.net/sjt19910311/a...转载 2018-04-26 11:44:00 · 435 阅读 · 0 评论 -
程序员面试金典——11.6矩阵元素查找
程序员面试金典——11.6矩阵元素查找Solution1:我的答案。和剑指offer上的题目类似,复杂度是O(m+n)O(m+n)O(m+n)。class Finder {public: vector<int> findElement(vector<vector<int> > mat, int n, int m, int x) { ...原创 2018-04-26 09:21:05 · 205 阅读 · 0 评论 -
程序员面试金典——11.5找出字符串
程序员面试金典——11.5找出字符串Solution1:我的答案。加强版的二分查找,嘿嘿嘿class Finder {public: int findString(vector<string> str, int n, string x) { // write code here if(n < 0) r...原创 2018-04-26 09:09:25 · 194 阅读 · 0 评论 -
程序员面试金典——11.3元素查找
程序员面试金典——11.3元素查找Solution1:我的答案 二分查找,貌似不咋好啊class Finder {public: int findElement(vector<int> A, int n, int x) { //二分法 // write code here、 if(n <= 0) re...原创 2018-04-25 10:51:12 · 243 阅读 · 0 评论 -
程序员面试金典——11.2变位词排序
程序员面试金典——11.2变位词排序Solution1: 参考网址:https://www.nowcoder.com/profile/845063/codeBookDetail?submissionId=12676002 知识点:利用set中count函数的功能,查找是否存在某个值class SortString {public: vector<string> s...原创 2018-04-25 10:41:08 · 240 阅读 · 0 评论 -
程序员面试金典——番外篇之约瑟夫问题2
程序员面试金典——番外篇之约瑟夫问题2参考网址:https://www.nowcoder.com/profile/9270572/codeBookDetail?submissionId=15779150Solution1:解题思路:在c++中利用vector来做 1. 每一轮报数完毕之后,将vector尾部节点复制到首部同时删除尾部结点,开始新一轮的报数。 2. vector中...原创 2018-04-25 10:13:52 · 317 阅读 · 0 评论 -
程序员面试金典——番外篇之约瑟夫问题1
程序员面试金典——番外篇之约瑟夫问题1Solution1:我的答案。脑子是个好东西,希望我总是带着他~ 该算法模拟了游戏过程,不算好。 要理清逻辑关系,因果关系,再下笔~class Joseph {public: int getResult(int n, int m) { // write code here if(n <= 0 || m...原创 2018-04-24 13:00:00 · 349 阅读 · 0 评论 -
【To Do】程序员面试金典——9.10堆箱子
程序员面试金典——9.10堆箱子To Do!原创 2018-04-24 12:39:02 · 461 阅读 · 0 评论 -
程序员面试金典——9.9n皇后问题
程序员面试金典——9.9n皇后问题Solution1:我的答案,利用回溯法可做 我的答案就挺好,哈哈哈哈class Queens {public: int nQueens(int n) { // write code here int times = 0; vector<int> solutions; ...原创 2018-04-24 09:13:37 · 448 阅读 · 0 评论 -
程序员面试金典——9.8硬币表示
程序员面试金典——9.8硬币表示参考网址:https://www.nowcoder.com/profile/1434243/codeBookDetail?submissionId=12603339 Solution1: 1.配套书上的递归解法 约定不同硬币凑成的值为n,硬币面值从小到大为[1,5,10,25] 这里逐步分析组成n的过程。 如果放秤砣一样,按照从大到小的顺序,考虑可能存...转载 2018-04-23 09:59:08 · 295 阅读 · 0 评论 -
【To Understand】程序员面试金典——番外篇之洪水
程序员面试金典——番外篇之洪水参考网址:https://www.nowcoder.com/profile/1917743/codeBookDetail?submissionId=12679910 Solution1:投机取巧法 果然,在test case十分有限的情况下,投机取巧也很容易成功啊~class Flood {public: int floodFill(vect...转载 2018-04-23 09:21:00 · 231 阅读 · 0 评论 -
程序员面试金典——9.6合法序号序列判断
程序员面试金典——9.6合法序号序列判断Solution1:我的答案,规定合法序列中只包含’(‘和’)’字符,所以比较容易。class Parenthesis {public: bool chkParenthesis(string A, int n) { // write code here if(n &amp;lt;= 1) re...原创 2018-04-23 08:29:02 · 277 阅读 · 0 评论 -
程序员面试金典——9.5字符串排列
程序员面试金典——9.5字符串排列Solution1:我的答案,也是递归,思路类似于9.4求集合的子集 这个思路就挺好的,清晰易懂!class Permutation {public: vector&amp;lt;string&amp;gt; getPermutation(string A) { //依据题意,有重复的英文字符但不合并 // write code here...原创 2018-04-22 23:21:03 · 369 阅读 · 0 评论