Fork me on GitHub

Leetcode-168 && 171-Excel表

Leetcode-168 && 171-Excel表

进制转换

这两道题本质上就是进制转换,把10进制转换成26禁止表示。

关于进制转换:https://zhuanlan.zhihu.com/p/75006709

Leetcode 168 Excel表列名称

1. 题目描述

给定一个正整数,返回它在 Excel 表中相对应的列名称。

1
2
3
4
5
6
7
8
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...

示例 1:

1
2
输入: 1
输出: "A"

示例 2:

1
2
输入: 28
输出: "AB"

示例 3:

1
2
输入: 701
输出: "ZY"
阅读更多...

Leetcode-191-位1的个数

Leetcode-191-Number of 1 Bits

思路:位运算

题目描述

编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

1
2
3
4
5
6
7
8
9
10
11
输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

输入:00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。

输入:11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
阅读更多...

23种设计模式-详细总结

23种设计模式-详细总结

概述

mark

  • 设计模式是解决问题的方案,学习现有的设计模式可以做到经验的复用
  • 拥有设计模式的词汇,在沟通是就能用到更少的词汇来讨论,并且不需要知道底层的细节

话在前头:

  1. 什么是好的设计模式?
  • 提高复用
  • 应对变化
  1. 在什么时候,什么地方使用设计模式?
  • 在需求频繁变化的变化点使用设计模式

  • Refactoring to Patterns(重构的方式一步一步到模式)

重构的关键方法:

  1. 静态 -> 动态
  2. 早绑定 -> 晚绑定
  3. 继承 -> 组合
  4. 编译时依赖 -> 运行时依赖
  5. 紧耦合 -> 松耦合
阅读更多...

Leetcode-189-旋转数组

Leetcode-189-Rotate Array

思路:遍历替换

题目描述

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

1
2
3
4
5
6
输入: [1,2,3,4,5,6,7] 和 k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]
1
2
3
4
5
输入: [-1,-100,3,99] 和 k = 2
输出: [3,99,-1,-100]
解释:
向右旋转 1 步: [99,-1,-100,3]
向右旋转 2 步: [3,99,-1,-100]

说明:

  • 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
  • 要求使用空间复杂度为 O(1) 的 原地 算法。
阅读更多...

Leetcode-009-回文数反转

Leecode-009- 回文数

题目描述

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
示例 1:

输入: 121
输出: true


示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。


示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
阅读更多...

Leetcode-202-快乐数

Leetcode-202-Happy Number

思路:

题目描述

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。

如果 n 是快乐数就返回 True ;不是,则返回 False 。

1
2
3
4
5
6
7
输入:19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
阅读更多...

Leetcode-108-将有序数组转换为二叉搜索树

Leecode-108-Convert Sorted Array to Binary Search Tree

题目描述

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

1
2
3
4
5
6
7
8
9
给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

0
/ \
-3 9
/ /
-10 5
阅读更多...

数据库-面经

数据库-面经

1. 索引的本质

  • 官方的话:索引是帮助MySQL高效获取数据的排好序的数据结构
  • 索引的数据结构

    • 二叉查找树(不使用,缺点是因为会变成一颗斜树)

    mark

    mark

  • 红黑树(特化二叉平衡树AVL)
    • 缺点:维护平衡二叉树的代价非常大,树的高度会很大
  • Hash表
  • B-Tree()
阅读更多...

Leetcode-238-除自身以外数组的乘积

Leecode-238-Product of Array Except Self

思路:左右乘积列表

题目描述

1
2
3
给你一个长度为 n 的整数数组 nums,
其中 n > 1,返回输出数组 output ,
其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

示例:

1
2
输入: [1,2,3,4]
输出: [24,12,8,6]

提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。

说明:不要使用除法,且在 O(n) 时间复杂度内完成此题。

进阶:
你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)

阅读更多...

Leetcode-239-滑动窗口的最大值

Leetcode-239-滑动窗口最大值

题目描述

  • 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。

  • 返回滑动窗口中的最大值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
示例 1:

输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
输出:[3,3,5,5,6,7]
解释:
滑动窗口的位置 最大值
--------------- -----
[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7

示例 2:

输入:nums = [1], k = 1
输出:[1]

示例 3:

输入:nums = [1,-1], k = 1
输出:[1,-1]

示例 4:

输入:nums = [9,11], k = 2
输出:[11]

示例 5:

输入:nums = [4,-2], k = 2
输出:[4]

提示:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104
  • 1 <= k <= nums.length
阅读更多...
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信