ICode9

精准搜索请尝试: 精确搜索
  • 剑指offer系列19:复杂链表的复制2022-04-30 15:34:41

    这道题是典型的分治法,将一个大问题分解成几小步解决。一定要注意在使用指针的时候指针指向是否为空的问题。在指针指向时,可以将一个指向为空的指针作为赋值来写,但是空指针不能指向任何地方(指向空也不行),这点一定要记住。 #include<iostream> #include<vector> using namespace std

  • 剑指offer(34)2022-04-30 09:32:06

    剑指offer(34) 剑指 Offer 34. 二叉树中和为某一值的路径 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targ

  • 【位运算】剑指offer 56. 数组中数字出现的次数2022-04-29 23:00:07

    这是一系列位运算的题目,本文将由浅入深,先从最简单的问题开始: 问题1: 一个数组中只有一个数字出现过1次,其余数字都出现过两次,请找到那个只出现1次的数字。要求时间复杂度是 \(O(n)\),空间复杂度是 \(O(1)\)。 解法: 考虑到位运算中的异或运算,一个数字和它自己做异或,结果为0。所以只

  • 剑指offer(31)2022-04-29 09:34:32

    剑指offer(31) 剑指 Offer 31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就

  • 剑指offer(30)2022-04-29 09:04:15

    剑指offer(30) 剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(

  • 剑指offer(24)2022-04-27 10:03:32

    剑指offer(24) 剑指 Offer 24. 反转链表 难度简单430 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 对于链表的处理,很多时候加上一个虚拟头节点就可以减少许

  • 剑指offer(20)2022-04-27 09:31:51

    剑指offer(20) 剑指 Offer 20. 表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 若干空格 小数(按顺序)可以分成以下几个部分: (可选)一个符号字

  • 剑指offer(14)2022-04-25 09:32:52

    剑指offer(14) 剑指 Offer 14- I. 剪绳子 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到

  • 剑指offer(12)2022-04-23 10:35:03

    剑指offer(12) 剑指 Offer 12. 矩阵中的路径 难度中等581 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元

  • 剑指 Offer 16. 数值的整数次方2022-04-22 23:31:54

    实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25 提示:    -100.0 < x < 1

  • 剑指offer(9)2022-04-22 17:03:45

    剑指offer(9) 剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","de

  • 剑指offer(68)2022-04-22 09:31:06

    剑指offer(68) 剑指 Offer 68 - II. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自

  • 剑指 Offer 67. 把字符串转换成整数2022-04-20 22:01:39

    思路:模拟,排除边界情况 Python: class Solution: def strToInt(self, str: str) -> int: if not str or (len(str)==1 and (str[0]<'0' or str[0]>'9')): return 0 str=str.strip() count=len(str) dig

  • 剑指 Offer 03. 数组中重复的数字-----原地交换2022-04-20 20:02:15

    题目表述 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 原地交换 题目给

  • 剑指 Offer 15. 二进制中1的个数2022-04-20 16:02:14

    题目 剑指 Offer 15. 二进制中1的个数 代码 class Solution { public: int hammingWeight(uint32_t n) { int res = 0; while(n) { res += n & 1; n >>= 1; } return res; } }; [n& (n - 1)]

  • 剑指 Offer 14- II. 剪绳子 II2022-04-20 15:31:41

    题目 剑指 Offer 14- II. 剪绳子 II 代码 class Solution { public: int cuttingRope(int n) { if(n <= 3) return 1 * (n - 1); long res = 1; if(n % 3 == 1) res = 4, n -= 4; else if( n % 3 == 2)

  • 剑指 Offer 28. 对称的二叉树2022-04-19 20:33:56

    思路:递归的思想,当头节点不存在时直接返回True,递归遍历左右节点的值。 Python: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def

  • 剑指 Offer 16. 数值的整数次方2022-04-19 00:35:05

    剑指 Offer 16. 数值的整数次方 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。   示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3 输出:9.26100 示例 3: 输入:x = 2.00000, n = -2 输出:0.25000 解释:2-

  • 剑指 Offer 14- II. 剪绳子 II2022-04-19 00:32:06

    给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+

  • 剑指 Offer 32 - III. 从上到下打印二叉树 III2022-04-18 22:33:32

    思路:在二叉树的层序遍历基础上加一个校验位,通过校验位来判断此层需要正序添加还是逆序添加。 Python: class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: res=[] if not root: return res queue=[] que

  • 剑指 Offer 32 - I. 从上到下打印二叉树2022-04-18 21:34:36

    思路:二叉树的前序遍历,存到res中返回。 Python: class Solution: def levelOrder(self, root: TreeNode) -> List[int]: res=[] def dfs(root): if not root: return None res.append(root.val) dfs(root

  • 剑指 Offer 10- II. 青蛙跳台阶问题2022-04-18 11:33:56

    题目 剑指 Offer 10- II. 青蛙跳台阶问题 代码 class Solution { public: int numWays(int n) { int a = 1, b = 1; while(n--) { int c = (a + b) % 1000000007; a = b; b = c; } return a; } };

  • 剑指 Offer 05. 替换空格2022-04-17 16:34:38

    题目 剑指 Offer 05. 替换空格 代码 class Solution { public: string replaceSpace(string s) { string res; for(auto x : s) { if(x == ' ') res += "%20"; else res += x;

  • 剑指 Offer 11. 旋转数组的最小数字2022-04-17 01:02:25

    思路:遍历数组,如果后一个元素比前一个元素小,说明从此开始旋转,输出后一个元素。若遍历结束仍未找到,则说明旋转从index=0开始,输出队首元素。 Python: class Solution: def minArray(self, numbers: List[int]) -> int: if not numbers: return -1 fo

  • 剑指 Offer 05. 替换空格2022-04-17 00:35:48

    思路:遍历查找空格进行替换 Python: class Solution: def replaceSpace(self, s: str) -> str: res=[] for c in s: if c==' ': res.append("%20") else: res.append(c) re

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有