剑指offer
AnthonyM08
这个作者很懒,什么都没留下…
展开
-
剑指offer JZ53 表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。解答有以下几种合法表示:符号位+数字个位数+‘e’+数字数字+’.’+数字其余都非法因此可以先判断第一位是否是符号位如果是,那么后面出现非数字则返回false。再判断是否是小数点,如果是则返回false如果不是,用一个int计算遇到e原创 2021-05-24 17:48:52 · 115 阅读 · 0 评论 -
JZ31 整数中1出现的次数(从1到n整数中1出现的次数)
题目描述老ACMer了(虽然我没写过)本题知识点: 数学解答没什么思路 直接放弃解答 https://blog.csdn.net/weixin_38481963/article/details/88313953暴力法public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int sum = 0; for(int i=1;i<=n;i++)转载 2021-03-18 15:03:58 · 135 阅读 · 0 评论 -
JZ36 两个链表的第一个公共结点
题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)本题知识点: 链表解答这个写的非常详细了 https://blog.csdn.net/kongmin_123/article/details/82315013感觉写过好几遍,但是还是想不起第三个方法/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x原创 2021-03-18 14:57:17 · 98 阅读 · 0 评论 -
JZ37 数字在升序数组中出现的次数
题目描述本题知识点: 数组 二分解答第一反应class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int count=0; for(int i=0;i<data.size();i++){ if(data[i]==k) count++; if(data[i]>k)原创 2021-03-15 15:43:34 · 103 阅读 · 0 评论 -
JZ40 数组中只出现一次的两个数字
题目描述本题知识点: 位运算 哈希解答两种解决方法参考https://blog.csdn.net/yangfeisc/article/details/45314703原创 2021-03-15 15:06:23 · 84 阅读 · 0 评论 -
JZ43
题目描述本题知识点: 穷举解答第一个想到的是递归?但知识点是穷举,先用穷举做吧。class Solution {public: vector<vector<int> > FindContinuousSequence(int sum) { vector<int> temp; vector<vector<int>> result; int add_sum=0; int e原创 2021-03-12 12:46:45 · 105 阅读 · 0 评论 -
剑指offer JZ42 和为S的两个数字
题目描述本题知识点: 数学 数组 双指针解答从知识点中看出可以用双指针,因为是递增序列,所以一个指针从小指,另一个从尾指(可以用vector.end()获取尾指针),从后判断,如果头指针和尾指针之和小于指定n,则将头指针后移一位,重复,如果有多组,用a和b记录乘积最小的,m记录乘积。...原创 2021-03-12 12:09:06 · 105 阅读 · 0 评论 -
剑指offer JZ45 扑克牌顺子
题目描述解答排序,然后判断除了0之外最大最小值是否超过5,并且是否有重复数字。用标准库中的sort函数排序。class Solution {public: bool IsContinuous( vector<int> numbers ) { if(numbers.empty()) return false; sort(numbers.begin(),numbers.end()); int min=0; for(i原创 2021-03-07 16:32:45 · 122 阅读 · 2 评论 -
剑指offer JZ43 左旋字符串
题目描述解答利用了字符串的特性,用两个字符串分别复制前n位和后n位,再交换。感觉是比较笨的方法,但是比较好理解。class Solution {public: string LeftRotateString(string str, int n) { string right_part = ""; string left_part = ""; int i; for(i=0;i<n;i++) righ原创 2021-03-07 16:09:52 · 85 阅读 · 0 评论 -
剑指offer JZ46 孩子们的游戏(圆圈中最后剩下的数)
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得原创 2021-03-07 15:52:38 · 147 阅读 · 0 评论 -
剑指offer JZ47 求1+2+3+...+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解答不会。https://blog.csdn.net/weixin_41020287/article/details/108921444expressionA && expressionB,若expressionA为false,则整个表达式为false,不再计算expressionB;expressionA || expressionB原创 2021-03-07 14:55:44 · 86 阅读 · 0 评论 -
剑指offer JZ50 数组中重复的数字
题目描述解答暴力解扫描三遍,第一遍初始长度为n的数组,第二遍记录每个数字出现的次数,第三遍找到第一个出现次数大于1的数字。class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型vector * @return int整型 */ int duplicate(vector<int>原创 2021-03-05 17:17:41 · 102 阅读 · 0 评论 -
剑指offer JZ54 字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。解答该题目也是分为两个函数解答的,最暴力的一个思路就是Insert函数将新的字符添加到vector数组中,然后将最后一个字符提取出来,重新扫描一遍看是否有重复位置。第二个思路是hash。...原创 2021-03-05 16:29:45 · 116 阅读 · 0 评论 -
剑指offer JZ55 链表中环的入口结点
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解答脑子里总想起来一个解答但是忘了怎么写。https://blog.csdn.net/qq_38790716/article/details/89207822这边除了有代码解答还有数学证明。class Solution {public: ListNode* EntryNodeOfLoop(ListNode* pHead) { ListNode* pFast = pHead;原创 2021-03-05 15:42:19 · 85 阅读 · 0 评论 -
剑指offer JZ57 二叉树的下一个结点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。本题知识点: 树解答中序遍历是先遍历左子结点,然后遍历中间结点,最后遍历右子结点。有几种情况:G结点(本身为左节点且左右子节点都没有):父节点。D结点(左右子节点都有且左右子节点无子结点):下一个结点就是右子节点。H结点(本身为右节点且左右子节点都没有且非最右结点):父节点的父节点。E结点(本身为左子节点且有右子节点):右子节点A结点(左右子节点都原创 2021-03-05 13:32:50 · 113 阅读 · 0 评论 -
剑指offer JZ60 把二叉树打印成多行
题目描述本题知识点: 树 bfs队列思路:利用队列。我这里利用了两个队列,或者记当前层的子节点数也行,参考https://blog.csdn.net/cherrydreamsover/article/details/81515076以下是我的解,已通过。#include <queue>class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) {原创 2021-02-26 16:17:40 · 129 阅读 · 0 评论