July面试题整理系列(1)

本文介绍了一种寻找整数数组中最小差值绝对值的算法,提供了四种不同思路的实现方式,包括暴力破解、排序+查找相邻最小差值、分治法及哈希映射方法,并给出了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

给定一个整数数组,要求找到最小的差的绝对值。

思路:

(1)暴力,O(n^2)

(2)O(n*logn),排序+寻找相邻最小的差值的绝对值,实现在下面的fun_1

(3)O(n*logn),分治,最小差值要么在左边要么在右边,或者一个在左边一个在右边,那么第三种情况就分别遍历左右,找到两边最大值和最小值,

最小值之差的绝对值和最大值之差的绝对值中的较小的就是第三种情况的解(未验证)

(4)先哈希映射,然后遍历映射数组,fun_2

 1 #include <iostream>
 2 #include <queue>
 3 #include <climits>
 4 #include <algorithm>
 5 #include <memory.h>
 6 #include <stdio.h>
 7 #include <map>
 8 using namespace std;
 9 
10 
11 vector<int> A;
12 //排序+选择最小相邻元素值
13 int fun_1()
14 {
15     sort(A.begin().A.end());
16     int i;
17     int ans = INT_MAX;
18     for(i = 0 ; i < A.size()-1 ; ++i)
19     {
20         int tmp = abs(A[i]-A[i+1]);
21         ans = min(ans,tmp);
22     }
23     return ans;
24 }
25 //哈希的思想,类似于基数排序
26 int fun_2()
27 {
28     int minNum = INT_MAX;
29     int maxNum = INT_MIN;
30     int i;
31     for(i = 0 ; i < A.size() ; ++i)
32     {
33         minNum = min(minNum,A[i]);
34         maxNum = max(maxNum,A[i]);
35     }
36     vector<int> calNum(maxNum-minNum+1);
37     for(i = 0 ; i < A.size() ; ++i)
38     {
39         calNum[A[i]-minNum]++;
40     }
41     int ans = INT_MAX;
42     bool flag = true;
43     int pre;
44     for(i = 0 ; i < calNum.size(); ++i)
45     {
46         if(calNum[i] >= 2)
47             return 0 ;
48         else if(calNum[i] == 1 && flag)
49         {
50             pre = i;
51             flag = false
52         }
53         else if(calNum[i] == 1 && !flag)
54         {
55             ans = min(ans,i-pre);
56             pre = i;
57         }
58     }
59     return ans;
60 }
61 int main()
62 {
63     return 0;
64 }

 

转载于:https://www.cnblogs.com/cane/p/3836737.html

BAT机器学习面试1000题系列 1 前言 1 BAT机器学习面试1000题系列 2 1 归一化为什么能提高梯度下降法求解最优解的速度? 22 2 归一化有可能提高精度 22 3 归一化的类型 23 1)线性归一化 23 2)标准差标准化 23 3)非线性归一化 23 35. 什么是熵。机器学习 ML基础 易 27 熵的引入 27 3.1 无偏原则 29 56. 什么是卷积。深度学习 DL基础 易 38 池化,简言之,即取区域平均或最大,如下图所示(图引自cs231n) 40 随机梯度下降 46 批量梯度下降 47 随机梯度下降 48 具体步骤: 50 引言 72 1. 深度有监督学习在计算机视觉领域的进展 73 1.1 图像分类(Image Classification) 73 1.2 图像检测(Image Dection) 73 1.3 图像分割(Semantic Segmentation) 74 1.4 图像标注–看图说话(Image Captioning) 75 1.5 图像生成–文字转图像(Image Generator) 76 2.强化学习(Reinforcement Learning) 77 3深度无监督学习(Deep Unsupervised Learning)–预测学习 78 3.1条件生成对抗网络(Conditional Generative Adversarial Nets,CGAN) 79 3.2 视频预测 82 4 总结 84 5 参考文献 84 一、从单层网络谈起 96 二、经典的RNN结构(N vs N) 97 三、N VS 1 100 四、1 VS N 100 五、N vs M 102 Recurrent Neural Networks 105 长期依赖(Long-Term Dependencies)问题 106 LSTM 网络 106 LSTM 的核心思想 107 逐步理解 LSTM 108 LSTM 的变体 109 结论 110 196. L1与L2范数。机器学习 ML基础 易 163 218. 梯度下降法的神经网络容易收敛到局部最优,为什么应用广泛?深度学习 DL基础 中 178 @李振华,https://www.zhihu.com/question/68109802/answer/262143638 179 219. 请比较下EM算法、HMM、CRF。机器学习 ML模型 中 179 223. Boosting和Bagging 181 224. 逻辑回归相关问题 182 225. 用贝叶斯机率说明Dropout的原理 183 227. 什么是共线性, 跟过拟合有什么关联? 184 共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。 184 共线性会造成冗余,导致过拟合。 184 解决方法:排除变量的相关性/加入权重正则。 184 勘误记 216 后记 219
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值