剑指55:二叉树的深度 传送门nowcoderleetcode 题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 C++ 代码 - nowcoder123456789101112131415161718192021222324252627282930313233343536373839/* DFS,递归实现*/class Solutio 2021-02-01 #剑指
剑指54:二叉搜索树的第k大节点 传送门nowcoderleetcode 题目描述给定一棵二叉搜索树,请找出其中的第 k 小的结点。 C++ 代码 - nowcoder1234567891011121314151617181920212223/* 中序遍历,从小到大的排列顺序 迭代写法*/class Solution {public: int KthNode(TreeNode* pRoot, int k) 2021-02-01 #剑指
剑指53-II:0~n-1中缺失的数字 传送门leetcode 题目描述一个长度为 n-1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0~n-1。在范围 0~n-1 内的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字。 C++ 代码 - leetcode123456789101112131415161718192021222324252627282930313233343536373839404142/* 2021-02-01 #剑指
剑指53:在排序数组中查找数字 传送门nowcoderleetcode 题目描述给定一个长度为 n 的非降序数组和一个非负数整数 k ,统计 k 在数组中出现的次数。数据范围:0 <= n <= 1000, 0 <= k <= 100,数组中每个元素的值满足 0 <= val <= 100要求:时间复杂度 O(logn),空间复杂度 O(1) C++ 代码 - nowcoder12345678 2021-02-01 #剑指
剑指52:两个链表的第一个公共节点 传送门nowcoderleetcode 题目描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。 C++ 代码 - nowcoder1234567891011121314151617181920212223/* 双指针 第一轮移动使到达链表尾部的节点指向另一个链表的头部(消除了两个链表的长度之差) 如果两个指针相遇,两个指针等于移动了相同的距离,则返回 2021-02-01 #剑指
剑指51:数组中的逆序对 传送门nowcoderleetcode 题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。将 P 对 1000000007 取模的结果输出。 C++ 代码 - nowcoder1234567891011121314151617181920212223242526272829303132333435363738394 2021-02-01 #剑指
剑指50:第一个只出现一次的字符 传送门nowcoderleetcode 题目描述在一个字符串中找到第一个只出现一次的字符,并返回它的位置,如果没有则返回 -1(需要区分大小写、从 0 开始计数)。数据范围:0 <= n <= 10000,字符串只有字母组成。要求:时间复杂度 O(n),空间复杂度 O(n) C++ 代码 - nowcoder123456789101112131415161718192021222324 2021-02-01 #剑指
剑指49:丑数 传送门nowcoderleetcode 题目描述把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。例如:6、8 都是丑数,但 14 不是,因为它包含质因子 7。 习惯上我们把 1 当做是第一个丑数。求按从小到大的顺序的第 N 个丑数。 C++ 代码 - nowcoder123456789101112131415161718192021222324252627282930313 2021-02-01 #剑指
剑指48:最长不含重复字符的子字符串 传送门nowcoderleetcode 题目描述请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 C++ 代码 - nowcoder123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657/* 哈希表 + 双指 2021-02-01 #剑指
剑指47:礼物的最大价值 传送门nowcoderleetcode 题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。从棋盘的左上角开始拿格子里的礼物,每次向右或者向下移动一格,直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,计算你最多能拿到多少价值的礼物? C++ 代码 - nowcoder12345678910111213141516171819202122232425 2021-02-01 #剑指