
剑指offer
killer__
这个作者很懒,什么都没留下…
展开
-
剑指offer 面试题52. 两个链表的第一个公共节点
这题之前leetcode做过,权当复习首先这题没说是否一定有公共节点,如果代码可能因为这一点造成死循环的,需要提前验证所给两个链表是否有公共节点。方法1:对于每一个list1的节点,遍历list2查找有无相同节点,O(N^2)方法2:用一个set存list2的节点,遍历list1找第一个匹配的,O(N)时间O(N)空间方法3:分别遍历两个链表计算各自长度L1,L2 长度长的链表先走(L1-...原创 2020-02-09 03:54:48 · 229 阅读 · 0 评论 -
剑指offer 面试题43. 1~n整数中1出现的次数
leetcode上也见过一样的题,当时不会做 看了一下解法是纯数学解法就没看,结果剑指offer上也出现了这道题,那还是认真看下吧对于数字abcde,如果第一位是1,比如12345,即计算f(12345)。那么首位为1对结果的增益一共是10000到12345一共2346个。另外首位为1的数字,后四位还可能有1出现,这部分即0001到2345(对应的数字就是10001到12345),也递归解决...原创 2020-02-08 17:13:57 · 514 阅读 · 0 评论 -
剑指offer 面试题40. 最小的k个数
O(N)划分法:要求前k小的数,只要执行快排划分,每次划分都会把数据分成大小两拨。直到某一次划分的中心点正好在k处,则左侧0~k-1的数字正好就是所求。class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { int n=in...原创 2020-02-08 14:51:13 · 273 阅读 · 0 评论 -
剑指offer 面试题38 字符串的排列
我惯用的dfs模板直接拿来套class Solution {public: vector<string> Permutation(string str) { if(str.empty()){return{};} int n=str.size(); vector<string> res; vector...原创 2020-02-07 22:49:30 · 163 阅读 · 0 评论 -
剑指offer 面试题36.二叉搜索树与双向链表
中序递归,一个pre节点记录前一个节点/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: TreeNod...原创 2020-02-07 15:36:11 · 157 阅读 · 0 评论 -
剑指offer 面试题35.复杂链表的复制
时间O(N),空间O(N)/*struct RandomListNode { int label; struct RandomListNode *next, *random; RandomListNode(int x) : label(x), next(NULL), random(NULL) { }};*/class Solutio...原创 2020-02-07 01:42:09 · 160 阅读 · 0 评论 -
剑指offer面试题30.包含min函数的栈
一开始写的垃圾代码,push和pop都是O(N)class Solution {public: vector<int> vec; int min_val=INT_MAX,min_cnt=0; void push(int value) { vec.push_back(value); if(min_cnt==0){ ...原创 2020-02-06 16:31:53 · 240 阅读 · 0 评论 -
剑指Offer:面试题20:表示数值的字符串
记录一下书上的写法。很整洁,每个函数的功能都显而易见。自己开始写的一堆if else语句像是一坨屎。另外注释的地方短路效应也要注意一下。总之这题还挺考察代码素质的(我这种就不存在什么素质。。乱糟糟一团)#include<iostream>using namespace std;bool is_unsignedint(char** str);bool is_int(char** ...原创 2019-11-26 23:15:16 · 163 阅读 · 0 评论 -
面试题17.打印从1到最大的n位数
void print_n_number(int n){ if(n<=0){ cout<<"fuckyou"; return; } string s="1"; while(s.size()<=n){ while(s.back()<='9'){ cout<<s<<endl; s.back()+=1; } in...原创 2019-11-14 01:11:08 · 150 阅读 · 0 评论