剑指OFFER
qq_37172182
i++, ++i, c++, g++, x++
展开
-
剑指OFFER系列之62----圆圈中最后剩下的数字
剑指OFFER题目描述:0,1,…, n-1这n个数字围成一圈,从0开始报数,每次从圈中删除第m个数字。求圈中最后剩下的数字。struct ListNode{ int val; ListNode* next; ListNode(): val(-1), next(nullptr){} ListNode(int x): val(x), next(nullptr){}};// math methodint joesphus(int n, int m){ if(n < 1 || m原创 2021-07-04 22:16:39 · 112 阅读 · 0 评论 -
剑指OFFER系列之60----n个骰子的点数
剑指OFFER题目描述:滑动窗口的最大值把n个骰子扔在地上,所有骰子朝上的一面的和为s。输入n,输出和为s的所有值的可能概率。vector<double> diceProb(int n){ vector<double> ans(5 * n + 1, 1.0 / 6); for(int i = 1; i < n; i++){ vector<double> tmp(5 * n + 1, 0.0); for(int j = 0; j < 5 *原创 2021-07-04 17:01:45 · 111 阅读 · 0 评论 -
剑指OFFER系列之59----队列的最大值
剑指OFFER题目描述一:滑动窗口的最大值给定一个数组和滑动窗的大小,请找出所有滑动窗的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1},输出{4, 4,6,6,6,5}。vector<int> maxWin(vector<int> &nums, int k){ if(k < 1 || k > nums.size()){ cout << "failing case !" << endl; return {};原创 2021-07-04 16:56:56 · 90 阅读 · 0 评论 -
剑指OFFER系列之55----二叉树的深度
剑指OFFER题目描述:输入二叉搜索树的根节点,输出该二叉树的深度。int depth(TreeNode* root){ if(!root){ return 0; } return 1 + max(depth(root -> left), depth(root -> right));}原创 2021-06-24 16:14:05 · 88 阅读 · 0 评论 -
剑指OFFER系列之54----二叉树中第k大节点
剑指OFFER题目描述:给定一棵二叉搜索树,请找出第k大的节点。TreeNode* kthNode(TreeNode* root, int& k){ TreeNode* target = nullptr; if(root -> right){ target = kthNode(root -> right, k); } if(!target){ if(k == 1){ target = root; } k--; } if(!target &原创 2021-06-24 11:33:31 · 85 阅读 · 0 评论 -
剑指OFFER系列之51----数组中的逆序对
剑指OFFER题目描述:在一个数组中,如果前一个数字大于后面的数字, 则这两个数字组成一个逆序对。输入一个数组,求该数组中逆序对的个数。#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>#include<climits>#include<unordered_map>using names原创 2021-06-22 17:34:06 · 118 阅读 · 0 评论 -
剑指OFFER系列之48----最长不含重复字符的子字符串
剑指OFFER题目描述:请从字符串中找出一个最长的不包含重复字符串的的子字符串,计算该最长子字符串的长度。#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>#include<climits>#include<unordered_map>using namespace std;int原创 2021-06-21 23:14:03 · 127 阅读 · 2 评论 -
剑指OFFER系列之46----把数字翻译成字符串
剑指OFFER题目描述:输入一个数字,按照如下规则把它翻译成字符串:0翻译成"a",1翻译成"b",…, 25翻译成"z"。一个数字可能有多个翻译。例如12258有5中不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”。请编程实现一个函数,用来计算一个数字可以有多少种翻译方式。#include<iostream>#include<string>#include<vector>#include<map>#原创 2021-06-21 22:00:32 · 81 阅读 · 0 评论 -
剑指OFFER系列之40----最小的K个数
剑指OFFER题目描述:输入n个整数,找出最小的k个数。#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>#include<climits>#include<queue>using namespace std;// method 1 : priority_queuevector&l原创 2021-06-19 10:19:31 · 83 阅读 · 0 评论 -
剑指OFFER系列之36----二叉搜索树与双向链表
剑指OFFER题目描述:输入一颗二叉搜索树,将该二叉搜索树转换为一个排序的双向链表。#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>#include<climits>using namespace std;struct TreeNode{ int val; TreeNode* left; T原创 2021-06-17 15:50:53 · 117 阅读 · 0 评论 -
剑指OFFER系列之34----二叉树中和为某一值的路径
剑指OFFER热身:输入一颗二叉树和一个整数,判断是否存在从根节点到叶节点和为给定整数的路径。class Solution{ bool ans;public: void pathSum(TreeNode* root, int sum, int curSum){ if(!root){ return; } curSum += root -> val; if(!root -> left && !root -> right &&原创 2021-06-11 16:02:02 · 143 阅读 · 0 评论 -
剑指OFFER系列之31----栈的压入和弹出序列
剑指OFFER题目描述:输入两个整数序列,第一个序列表示栈的压入序列,判断第二个序列是否为栈的出栈序列。bool isPopOrder(vector<int>& in, vector<int>& out){ stack<int> s; int n = in.size(), idx = 0; for(int i = 0; i < n; i++){ s.push(in[i]); while(!s.empty() &&原创 2021-06-10 17:26:09 · 94 阅读 · 0 评论 -
剑指OFFER系列之25----合并两个排序链表(拓展:合并K个链表)
剑指OFFER题目描述:输入两个有序链表,合并两个链表使新的链表仍然是增序链表。#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>#include<climits>/* *merge to sorted list * */using namespace std;struct ListNode{原创 2021-06-08 16:17:11 · 88 阅读 · 0 评论 -
剑指OFFER系列之20----数值字符串
剑指OFFER题目描述:设计一个函数判断是否表示数值(包含整数和小数)。如“+100”, “5e2”,“-123”, “3.146”,“-1E-16”等。class Solution{ int i;public: bool parseB(string& s){ int temp = i; while(i < s.size() && s[i] >= '0' && s[i] <= '9'){ i++; } return原创 2021-06-07 17:15:51 · 87 阅读 · 0 评论 -
剑指OFFER系列之12----矩阵中的路径
剑指OFFER题目描述:设计一个函数判断一个矩阵是否存在一条包含某字符串的所有字符的路径。bool hasPath(vector<vector<char>>& matrix, int i, int j, string s, int idx, vector<vector<int>>& visited){ if(idx == s.size()){ return true; } int rows = matrix.size(原创 2021-06-07 11:15:32 · 110 阅读 · 0 评论 -
剑指OFFER系列之18----删除重复节点
剑指OFFER题目描述:在一个排序的链表中删除重复节点。比如,删除链表 1 -> 2 -> 3 ->3 -> 4 -> 4 -> 5 的重复节点的结果为:1 -> 2 -> 5ListNode* deleteDuplicate(ListNode* head){ ListNode* dummy = new ListNode(-1); ListNode* ans = dummy; dummy -> next = head; ListNode原创 2021-05-19 17:33:37 · 80 阅读 · 0 评论 -
剑指OFFER系列之17----打印n位整数
剑指OFFER剑指OFFER系列之17----打印n位整数题目描述剑指OFFER系列之17----打印n位整数题目描述题目描述:输入正整数n,按顺序打印1~n位最大整数。比如输入3,则打印出1,2,3一直到最大的3位整数999。void printNum(string s){ int i = 0; while(s[i] == '0' && i < s.size()){ i++; } if(i < s.size()){ cout << sto原创 2021-05-19 17:18:26 · 77 阅读 · 0 评论