当前位置: 首页 > news >正文

45.日常算法

1.第二高的薪水

题目来源

Employee 表:
+-------------+------+
| Column Name | Type |
+-------------+------+
| id          | int  |
| salary      | int  |
+-------------+------+
id 是这个表的主键。
表的每一行包含员工的工资信息。

查询并返回 Employee 表中第二高的 不同 薪水 。如果不存在第二高的薪水,查询应该返回 null(Pandas 则返回 None) 。查询结果如下例所示。

示例 1:

输入:
Employee 表:
+----+--------+
| id | salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+
输出:
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+
# Write your MySQL query statement below
select (
    select distinct # 去重
        salary 
    from 
        Employee 
    order by salary desc # 降序排序
    limit 1, 1 # 筛选
) as SecondHighestSalary # 重命名

1.格雷编码

题目来源

n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:
每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)第一个整数是 0一个整数在序列中出现 不超过一次每对 相邻 整数的二进制表示 恰好一位不同 ,且第一个 和 最后一个 整数的二进制表示 恰好一位不同给你一个整数 n ,返回任一有效的 n 位格雷码序列 。

示例 1:
输入:n = 2
输出:[0,1,3,2]
解释:
[0,1,3,2] 的二进制表示是 [00,01,11,10] 。

  • 00 和 01 有一位不同
  • 01 和 11 有一位不同
  • 11 和 10 有一位不同
  • 10 和 00 有一位不同
    [0,2,3,1] 也是一个有效的格雷码序列,其二进制表示是 [00,10,11,01] 。
  • 00 和 10 有一位不同
  • 10 和 11 有一位不同
  • 11 和 01 有一位不同
  • 01 和 00 有一位不同

方法一:模拟

class Solution {
public:
    vector<int> grayCode(int n) {
        int c = (int)pow(2, n);
        int hash[70000] = {0};
        int k = 0;
        vector<int> ret;
        ret.push_back(0);
        hash[0] = 1;
        for (int i = 1; i < c; ++i){
            for (int j = 0; j < 32; ++j){
                int val = (1 <<j) ^ k;
                if (hash[val] != 1){
                    hash[val] = 1;
                    ret.push_back(val);
                    k = val;
                    break;
                }
            }
        }
        return ret;
    }
};

方法二:数学推导

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> ret(1 << n, 0);
        for (int i = 1; i < (1 << n); ++i){
            ret[i] = i ^ (i >> 1);
        }
        return ret;
    }
};

相关文章:

  • 【算法通关村 Day6】二叉树层次遍历
  • Leetcode 76 Minimum Window Substring
  • 哈希表(概念)c++
  • 数据结构——模拟栈例题B3619
  • ShardingSphere 数据库中间件【详解大数据量下分库分表,读写分离,主从同步,以及ShardingSphere-JDBC使用,附有示例+代码】
  • 简单工厂模式 (Simple Factory Pattern) 在Spring Boot 中的应用
  • 机器学习实战(10):深度学习初探——卷积神经网络(CNN)
  • OpenGL(2)基于Qt做OpenGL开发
  • 深⼊理解指针(1)
  • 电脑想安装 Windows 11 需要开启 TPM 2.0 怎么办?
  • 从零开始学习PX4源码9(部署px4源码到gitee)
  • 低代码表单引擎刷新机制
  • Redis 存在线程安全问题吗?为什么?
  • 排查JVM的一些命令
  • langchain系列 - FewShotPromptTemplate 少量示例
  • Linux 和 Windows 区别
  • C++的封装(十五):第四种访问控制
  • STL 在线转 3MF,开启 3D 模型转换新体验
  • krpano学习笔记,端口修改,krpano二次开发文档,krpano三维div信息展示,krpano热点显示文字
  • Java 中的方法参数传递与值传递
  • 中国做网站推广哪家好/宁波seo在线优化公司
  • 白山市网站建设/什么公司适合做seo优化
  • 网站群建设技术规范/网络公司主要做哪些
  • 帝国cms建站系统/代运营公司排名
  • 做兼职网上哪个网站好/一般的电脑培训班要多少钱
  • 企业网站制作优化/免费com域名申请注册