
剑指Offer
黑桃_K_
K
展开
-
剑指 Offer JZ31 整数中1出现的次数(从1到n整数中1出现的次数)
输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次范围1的个数0-91==10-991*10+10==200-99920*10+100==3000-9999300*10+1000==40000-999994000*10+10000==50000…………公式: 位数上数用n表示,e表示位数10^e-1 * e方法一:自己发现规律,然后摸索公式;.原创 2021-07-12 15:36:03 · 256 阅读 · 2 评论 -
剑指 Offer JZ12 数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。方法一:直接用库//c++11支持,此类型次方pow(base,exponent);方法二:次方(exponent)为几,base就乘几次; if(exponent<0){ base=1/base; .原创 2021-07-11 17:23:35 · 431 阅读 · 4 评论 -
剑指 Offer JZ49 把字符串转换成整数
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0;思路:遍历查找非整数字符,第一个字符串位置进行判断,采用-‘0’算出整数*10的多少次方;最后判断是否为负数;class Solution {public: int StrToInt(string str) { int flag=0,_size=str.size()-1; long int sum=0; for(int i=0;i&原创 2021-06-27 21:24:47 · 143 阅读 · 1 评论 -
剑指 Offer 67/68 - I. 二叉树/二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先;相比于二叉树,二叉搜索树也可以用二叉树的方法,又因为二叉搜索树的值有大小之分,所以可以通过判断的得大小,向一个方向去查找;方法一:二叉树的搜索方法;采用递归的方法,判断p,q是否存在在左孩子和右孩子里;/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *.原创 2021-06-22 19:04:25 · 99 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。链表信息:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */思路:将链表的值从尾到头反过来,链表只有下一个节点的指针,所以得从头遍历取出每个值;创建vector.原创 2021-06-20 12:04:10 · 82 阅读 · 1 评论 -
剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。这个题需要注意的是在string里面把一个字符换成三个字符,需要调整size的大小;1.在原有参数上改的话,需要对size进行增容,判断‘ ’个数进行增容;string replaceSpace(string s) { int count_e=0,len=s.size(); for(auto e:s){ if(e==' ') count_e++; .原创 2021-06-20 11:51:46 · 104 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。1.从左下角或者右上角进行比较搜索;2.两个for循环全部遍历; bool findNumberIn2DArray(vector<vector<int>> &matrix, int target) { // 二叉搜索树 int i=matrix.原创 2021-06-14 16:47:40 · 83 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字 五种解法
题:找出数组中重复的数字。题:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。题中的第一个测试用例以及需要引入的头文件可以将下面的方法直接放进去测试#include<vector>#include<iostream>#include<algorithm>#include<unordered_map>原创 2021-06-11 22:39:58 · 381 阅读 · 3 评论