33.哀家要长脑子了!

憋说了,感觉好不容易长出来的脑子又缩回去了。。。

1.539. 最小时间差 - 力扣(LeetCode)

把所有时间排好序,然后计算两两之间的分钟差就好,但是要注意加上最后一个和第一个的判断,因为这个时间是按字典序来排序的。所以像23:59 和 00:00 会被放在最后一个和第一个,漏判它俩,但其实他俩就差一分钟,很有可能就是正确答案。

添加一个判断更快

鸽巢原理(抽屉原理)

是一个基本的组合数学原理,简单的表述为:如果要把 n+1 个物体放入 n 个盒子中,那么至少有一个盒子里面会包含两个或两个以上的物体

在本题中的应用:一天最多24小时,1440分钟,即一共有1440种不同的时间,如果timesPoint的长度超过1440,那么必然会有两个相同的时间,此时可以直接返回0

还有就是小时转分钟

// 12:34 

// (1*10 + 2) *60 + (3*10 + 4) = 754

return (int(t[0] - '0')*10 + int(t[1] - '0'))*60 + int(t[3] - '0')*10 +int(t[4] - '0'); 

class Solution {
public:
    int getMin(string t){
  return (int(t[0] - '0')*10 + int(t[1] - '0'))*60 + int(t[3] - '0')*10 +int(t[4] - '0'); 
    }

    int findMinDifference(vector<string>& timePoints) {
        if(timePoints.size() > 1440){
            return 0;
        }
        sort(timePoints.begin(), timePoints.end());
        // 初始化所需变量
        int t0Min = getMin(timePoints[0]);
        int preMin = t0Min;
        int res = INT_MAX;

        for(int i = 1; i < timePoints.size(); i++){
            int nowMin = getMin(timePoints[i]);
            res = min(res, nowMin - preMin);
            preMin = nowMin;
        }

        res = min(res, t0Min + 1440 - preMin);
        return res;
    }
};

 

2.553. 最优除法 - 力扣(LeetCode)

 不明白为什么这个当时也想不懂。。。

对于除法要使其运算结果最大,那么就是,被除数最大,除数最小(直接在除数上面下功夫)。对于三个数及以上的除法运算,要使得其除数最小,就要使它的被除数最小,除数最大(在被除数上做手脚)就直接按顺序运算,一路运算过去就好。

class Solution {
public:
    string optimalDivision(vector<int>& nums) {
        string res;
        int n = nums.size();
        for(int i = 0; i < n; i++){
            
            res += to_string(nums[i]);
            if(i < n-1){
                res += "/";
            }
            if(i == 0 && n > 2){
                res += "(";
            }
        }
        if(n > 2){
            res += ")";
        }
        return res;
    }
};
3.537. 复数乘法 - 力扣(LeetCode)

复数的运算公式

(a+bi) * (c+di) = (ac - bd) + (bc + ad)i

主要是对代码掌握的熟练程度

class Solution {
public:
    pair<int, int> parse(string num){
        // 找到+号
        auto pos = find(num.begin(), num.end(), '+');
        // pos - num.begin() 是+号的位置
        string re = num.substr(0, pos - num.begin());
        string im = num.substr(pos - num.begin() + 1, num.begin() - pos - 2);
        // 分离出实数部分与虚数部分并返回
        return {stoi(re), stoi(im)};
    }
    string complexNumberMultiply(string num1, string num2) {
        // 结构化绑定
        auto[a,b] = parse(num1);
        auto[c,d] = parse(num2);
        int re = a*c - b*d;
        int im = a*d + b*c;
        return to_string(re) + '+' + to_string(im) + 'i';
    } 
};

注意:find()返回的是一个迭代器,想要找到位置,还需要减去最初开始位置的迭代器。

substr() 剪切的是一个左闭右开区间

    string s = "abcdefg";
    cout << s.substr(0,5);         // abcde

计算位置:

-1是减去+号的位置 还有一个-1减去的是偏移量,因为nums.end()指向的不是数组的最后一个元素而是最后一个元素还要后面的一个元素,别忘了。

 string im = num.substr(pos - num.begin() + 1, num.begin() - pos - 2);

 结构化绑定:

auto[a,b] = parse(num1);

基本语法:

auto [variable1, variable2, ..., variablen] =expression;

这里,expression是一个能够提供多个值(例如通过元组,pair或其他聚合类型)的表达式,而variable1, variable2, ..., variablen是声明的变量名,它们会依次绑定道expression提供的值上。

例如题中的parse(num1)返回的是:num1{2, 3}

那么a = 1, b = 3

4.Acwing-快速排序

模板

quick_sort(int q[], int l, int r){
    if(l >= r) return;
    
    int i = l - 1, j = r + 1, x = q[l+r>>1];
    while(i < j) {
        do i++; while(q[i] < x);
        do j--; while(q[i] > x);
        if(i < j)    swap(q[i], q[j]);
    }
    quick_sort(q, l, j);
    quick_sort(q, j+1, r);
}

quick_sort(q, 0, r-1);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/767266.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI研究的主要推动力会是什么?ChatGPT团队研究科学家:算力成本下降

AI 研究发展的主要推动力是什么&#xff1f;在最近的一次演讲中&#xff0c;OpenAI 研究科学家 Hyung Won Chung 给出了自己的答案。 近日&#xff0c;斯坦福大学《CS25: Transformers United V4》课程迎来了一位我们熟悉的技术牛人&#xff1a;Hyung Won Chung。 Chung 是 O…

Hadoop-03-Hadoop集群 免密登录 超详细 3节点公网云 分发脚本 踩坑笔记 SSH免密 服务互通 集群搭建 开启ROOT

章节内容 上一节完成&#xff1a; HDFS集群XML的配置MapReduce集群XML的配置Yarn集群XML的配置统一权限DNS统一配置 背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 VM 虚拟机上搭建过一次&…

Spring容器生命周期中如前置运行程序和后置运行程序

在Spring容器加入一个实现了BeanPostProcessor接口bean实例&#xff0c;重写postProcessBeforeInitialization、postProcessAfterInitialization方法&#xff0c;在方法里面写具体的实现&#xff0c;从而达到Spring容器在初如化前或销毁时执行预定的程序&#xff0c;方法如下&a…

深入浅出:npm常用命令详解与实践【保姆级教程】

大家好,我是CodeQi! 在我刚开始学习前端开发的时候,有一件事情让我特别头疼:管理和安装各种各样的依赖包。 那时候,我还不知道 npm 的存在,手动下载和管理这些库简直是噩梦。 后来,我终于接触到了 npm(Node Package Manager),它不仅帮我解决了依赖管理问题,还让我…

解决Visual Studio 一直弹出管理员身份运行问题(win10/11解决办法)

不知道大家是否有遇到这个问题 解决办法也很简单 找到启动文件 如果是快捷方式就继续打开文件位置 找到这个程序启动项 右键 选择 兼容性疑难解答&#xff08;win11 则需要 按住 shift 右键&#xff09; win10 解决办法 这样操作完后就可以了 win11解决办法按以下选择就行

深入理解策略梯度算法

策略梯度&#xff08;Policy Gradient&#xff09;算法是强化学习中的一种重要方法&#xff0c;通过优化策略以获得最大回报。本文将详细介绍策略梯度算法的基本原理&#xff0c;推导其数学公式&#xff0c;并提供具体的例子来指导其实现。 策略梯度算法的基本概念 在强化学习…

AI大模型时代来临:企业如何抢占先机?

AI大模型时代来临:企业如何抢占先机? 2023年,被誉为大模型元年,AI大模型的发展如同一股不可阻挡的潮流,正迅速改变着我们的工作和生活方式。从金融到医疗,从教育到制造业,AI大模型正以其强大的生成能力和智能分析,重塑着行业的未来。 智能化:企业核心能力的转变 企…

【CUDA】 归约 Reduction

Reduction Reduction算法从一组数值中产生单个数值。这个单个数值可以是所有元素中的总和、最大值、最小值等。 图1展示了一个求和Reduction的例子。 图1 线程层次结构 在Reduction算法中&#xff0c;线程的常见组织方式是为每个元素使用一个线程。下面将展示利用许多不同方…

AI-算力集群通往AGI

背景&#xff1a; 自GPT-4发布以来&#xff0c;全球AI能力的发展势头有放缓的迹象。 但这并不意味着Scaling Law失效&#xff0c;也不是因为训练数据不够&#xff0c;而是结结实实的遇到了算力瓶颈。 具体来说&#xff0c;GPT-4的训练算力约2e25 FLOP&#xff0c;近期发布的几个…

双曲方程初值问题的差分逼近(迎风格式)

稳定性: 数值例子 例一 例二 代码 % function chap4_hyperbolic_1st0rder_1D % test the upwind scheme for 1D hyperbolic equation % u_t + a*u_x = 0,0<x<L,O<t<T, % u(x,0) = |x-1|,0<X<L, % u(0,t) = 1% foundate = 2015-4-22’; % chgedate = 202…

刷代码随想录有感(124):动态规划——最长公共子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>>dp(nums1.size() 1, vector<int>(nums2.size() 1, 0));int res 0;for(int i 1; i <…

买华为智驾,晚了肯定要后悔

文 | AUTO芯球 作者 | 雷慢 晚了就来不及了&#xff01; 你买华为系的车&#xff0c;薅羊毛真的要趁早。 华为ADS2.0高阶智驾正在慢慢恢复原价&#xff0c; 你看啊&#xff0c;就在昨天&#xff0c;华为宣布ADS智驾优惠后价格调到3万元&#xff0c; 只有6000元的优惠了。…

153. 寻找旋转排序数组中的最小值(中等)

153. 寻找旋转排序数组中的最小值 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;153. 寻找旋转排序数组中的最小值 2.详细题解 如果不考虑 O ( l o g n ) O(log n) O(logn)的时间复杂度&#xff0c;直接 O ( n ) O(n) O(n)时间复杂…

从百数教学看产品设计:掌握显隐规则,打造极致用户体验

字段显隐规则允许通过一个控件&#xff08;如复选框、单选按钮或下拉菜单&#xff09;来控制其他控件&#xff08;如文本框、日期选择器等&#xff09;和标签页&#xff08;如表单的不同部分&#xff09;的显示或隐藏。 这种规则通常基于用户的选择或满足特定条件来触发&#…

vue3实现echarts——小demo

版本&#xff1a; 效果&#xff1a; 代码&#xff1a; <template><div class"middle-box"><div class"box-title">检验排名TOP10</div><div class"box-echart" id"chart1" :loading"loading1"&…

【Portswigger 学院】路径遍历

路径遍历&#xff08;Path traversal&#xff09;又称目录遍历&#xff08;Directory traversal&#xff09;&#xff0c;允许攻击者通过应用程序读取或写入服务器上的任意文件&#xff0c;例如读取应用程序源代码和数据、凭证和操作系统文件&#xff0c;或写入应用程序所访问或…

API Object设计模式

API测试面临的问题 API测试由于编写简单&#xff0c;以及较高的稳定性&#xff0c;许多公司都以不同工具和框架维护API自动化测试。我们基于seldom框架也积累了几千条自动化用例。 •简单的用例 import seldomclass TestRequest(seldom.TestCase):def test_post_method(self…

GDB 远程调试简介

文章目录 1. 前言2. GDB 远程调试2.1 准备工作2.1.1 准备 客户端 gdb 程序2.1.2 准备 服务端 gdbserver2.1.3 准备 被调试程序 2.2 调试2.2.1 通过网络远程调试2.2.1.1 通过 gdbserver 直接启动程序调试2.2.1.2 通过 gdbserver 挂接到已运行程序调试 2.2.2 通过串口远程调试2.2…

紫鸟浏览器搭配IPXProxy代理IP的高效使用指南

​紫鸟指纹浏览器一款专门为跨境电商而生的防关联浏览器&#xff0c;能够帮助跨境电商卖家解决多店铺管理问题。紫鸟指纹浏览器为跨境电商卖家提供稳定的登录环境&#xff0c;并且搭配IP代理&#xff0c;能够解决浏览器指纹记录问题&#xff0c;提高操作的安全性。那如何利用紫…