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

贪心算法题

0简介

0.1什么是贪心算法 

贪心算法是用贪婪(鼠目寸光)的角度,找到解决问题的最优解

贪心策略:(从局部最优 --> 整体最优)

1把解决问题的过程分为若干步;

2解决每一个问题时,都选择当前“看上去”最优的解法;

3“希望”得到全局最优解

0.2贪心算法特点

1贪心策略的提出

a.没有任何模板和标准

b.可能每道题的贪心标准是不同的

2贪心策略的正确性

a有可能贪心策略是错误的(例二和例三)

b也就是正确的贪心策略是需要证明的!

0.3证明找零问题 

1柠檬水找零

oj链接:柠檬水找零


class Solution
{
public:bool lemonadeChange(vector<int> &bills){int five = 0, ten = 0;for (auto &bill : bills){if (bill == 5)five++;else if (bill == 10){if (five == 0)return false;elseten++, five--;}else{if (ten == 0){if (five >= 3)five -= 3;elsereturn false;}else{ten--;if (five >= 1)five -= 1;elsereturn false;}}}return true;}
};
//简化版
class Solution
{
public:bool lemonadeChange(vector<int> &bills){int five = 0, ten = 0;for (int i = 0; i < bills.size(); i++){if (bills[i] == 5)five++;else if (bills[i] == 10){five--;ten++;}else{if (ten)ten--, five--;elsefive -= 3;}if (five < 0)return false;}return true;}
};

 

2将数组和减半的最小操作次数 

oj链接:将数组和减半的最少操作次数

class Solution
{
public:int halveArray(vector<int> &nums){priority_queue<double> qe;double sum = 0; // 不能用int!for (auto &num : nums){qe.push(num);sum += num;}int cnt = 0;double aim = sum / 2;while (true){double maxval = qe.top();qe.pop();sum -= maxval;cnt++;maxval /= 2;sum += maxval;if (sum <= aim)return cnt;qe.push(maxval);}}
};class Solution
{
public:int halveArray(vector<int> &nums){priority_queue<double> qe;double sum = 0.0;for (auto &num : nums){qe.push(num);sum += num;}sum /= 2.0;int cnt = 0;while (sum > 0){double t = qe.top() / 2.0;qe.pop();sum -= t;cnt++;qe.push(t);}return cnt;}
};

3最大数 

oj链接:最大数

class Solution
{
public:class cmp{public:bool operator()(const string &s1, const string &s2){return s1 + s2 > s2 + s1;}};string largestNumber(vector<int> &nums){vector<string> str;for (auto &e : nums)str.push_back(to_string(e));sort(str.begin(), str.end(), cmp());string ret;for (auto &e : str)ret += e;if (ret[0] == '0')return "0";return ret;}
};

4摆动序列 

oj链接:摆动序列

 

class Solution
{
public:int left = 0, ret = 0;int wiggleMaxLength(vector<int> &nums){for (int i = 0; i < nums.size() - 1; i++){int right = nums[i + 1] - nums[i];if (right == 0)continue; // 有连续相等的情况if (left * right <= 0)ret++; // left=0 -> 开始处于第一个位置也要加left = right;}return ret + 1; // 加上最后一个位置}
};

5最长递增子序列

oj链接:最长递增子序列

class Solution
{
public:int lengthOfLIS(vector<int> &nums){vector<int> ret;ret.push_back(nums[0]);for (int i = 1; i < nums.size(); i++){int x = nums[i];if (x > ret.back())ret.push_back(x);else{// 二分插入位置int left = 0, right = ret.size() - 1;while (left < right){int mid = left + (right - left) / 2;if (ret[mid] < x)left = mid + 1;elseright = mid;}ret[left] = x;}}return ret.size();}
};

6递增的三元子序列

oj链接:递增的三元子序列

思路:与上题类似! 

class Solution
{
public:bool increasingTriplet(vector<int> &nums){vector<int> ret;ret.push_back(nums[0]);for (int i = 1; i < nums.size(); i++){int x = nums[i];if (x > ret.back())ret.push_back(x);else{int left = 0, right = ret.size() - 1;while (left < right){int mid = left + (right - left) / 2;if (ret[mid] < x)left = mid + 1;elseright = mid;}ret[left] = x;}}return ret.size() >= 3;}
};

7最长连续递增序列

oj链接:最长连续递增序列

该方法是从暴力解法(两层for循环)优化来的,所以暴力解法对,这个贪心一定对!  

class Solution
{
public:int findLengthOfLCIS(vector<int> &nums){int n = nums.size(), ret = 1;for (int i = 0; i < n; i++){int j = i;while (j + 1 < n && nums[j] < nums[j + 1])j++;ret = max(j - i + 1, ret);i = j;}return ret;}
};

8买卖股票的最佳时机 

 oj链接:买卖股票的最佳时机

该方法是从暴力解法(两层for循环)优化来的,所以暴力解法对,这个贪心一定对!  

class Solution
{
public:int maxProfit(vector<int> &prices){int n = prices.size(), ret = 0;int MinPrice = INT_MAX;for (int i = 0; i < n; i++){int profit = prices[i] - MinPrice;MinPrice = min(MinPrice, prices[i]);ret = max(profit, ret);}return ret;}
};

此题也可以采用 动态规划58道算法题 中的买卖股票的最佳时机Ⅲ的思路来解决~

9买卖股票的最佳时机Ⅱ

 oj链接:买卖股票的最佳时机 II

//双指针
class Solution
{
public:int maxProfit(vector<int> &prices){int n = prices.size(), ret = 0;for (int i = 0; i < n; i++){int j = i;while (j + 1 < n && prices[j] < prices[j + 1])j++;ret += prices[j] - prices[i];i = j;}return ret;}
};//一天一天拆分
class Solution
{
public:int maxProfit(vector<int> &prices){int n = prices.size(), ret = 0;for (int i = 0, right = 0; i < n - 1; i++){right = prices[i + 1] - prices[i];if (right > 0)ret += right;}return ret;}
};

10K次取反后最大化的数组和

oj链接:K 次取反后最大化的数组和

//解法1:原始分类讨论
class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {int m = 0, minElem = INT_MAX, n = nums.size();for (auto x : nums) {if (x < 0)m++;minElem = min(minElem, abs(x)); // 求绝对值最⼩的那个数}// 分类讨论int ret = 0;if (m > k) {sort(nums.begin(), nums.end());for (int i = 0; i < k; i++) // 前 k ⼩个负数,变成正数{ret += -nums[i];}for (int i = k; i < n; i++) // 后⾯的数不变{ret += nums[i];}} else {// 把所有的负数变成正数for (auto x : nums)ret += abs(x);if ((k - m) % 2) // 判断是否处理最⼩的正数{ret -= minElem * 2;}}return ret;}
};
//解法2:利用小堆
class Solution
{
public:int largestSumAfterKNegations(vector<int> &nums, int k){priority_queue<int, vector<int>, greater<int>> qe;for (auto &num : nums)qe.push(num);while (k){int tmp = qe.top();qe.pop();tmp = -tmp;qe.push(tmp);k--;}int ret = 0;while (!qe.empty()){ret += qe.top();qe.pop();}return ret;}
};

11按身高排序 

oj链接:按身高排序

// 解法1
class Solution
{
public:vector<string> sortPeople(vector<string> &names, vector<int> &heights){int n = names.size();pair<int, string> pr[n];for (int i = 0; i < n; i++){pr[i].first = heights[i];pr[i].second = names[i];}sort(pr, pr + n, greater());vector<string> ret(n);for (int i = 0; i < n; i++)ret[i] = pr[i].second;return ret;}
};// 解法2
class Solution
{
public:vector<string> sortPeople(vector<string> &names, vector<int> &heights){int n = names.size();map<int, string> hash;for (int i = 0; i < n; i++)hash[heights[i]] = names[i];vector<string> ret;for (auto &[a, b] : hash)ret.push_back(b);reverse(ret.begin(), ret.end());return ret;}
};// 解法3
class Solution
{
public:vector<string> sortPeople(vector<string> &names, vector<int> &heights){int n = names.size();vector<int> index(n);for (int i = 0; i < n; i++)index[i] = i;sort(index.begin(), index.end(), [&](int i, int j){ return heights[i] > heights[j]; });vector<string> ret(n);for (int i = 0; i < n; i++)ret[i] = names[index[i]];return ret;}
};

12优势洗牌

oj链接:优势洗牌

class Solution
{
public:vector<int> advantageCount(vector<int> &nums1, vector<int> &nums2){int n = nums2.size();vector<int> index2(n);for (int i = 0; i < n; i++)index2[i] = i;sort(index2.begin(), index2.end(), [&](int i, int j){ return nums2[i] < nums2[j]; });sort(nums1.begin(), nums1.end());vector<int> ret(n);// 田忌赛马int left = 0, right = n - 1;for (int i = 0; i < n; i++){if (nums1[i] > nums2[index2[left]])ret[index2[left++]] = nums1[i]; // 比你大elseret[index2[right--]] = nums1[i]; // 比你小/相等 取对付你最大的数: nums2[index[right]]}return ret;}
};

13最长回文串

oj链接:最长回文串

class Solution
{
public:int longestPalindrome(string s){unordered_map<char, int> hash;for (auto &a : s)hash[a]++;int ret = 0, tmp = 0;for (auto &[a, b] : hash){// if(b%2==0) ret+=b;// else ret+=b-1;ret += b / 2 * 2;}if (ret < s.size())ret++;return ret;}
};

14增减字符串匹配 

oj链接:增减字符串匹配

class Solution
{
public:vector<int> diStringMatch(string s){vector<int> ret;int l = 0, r = s.size();for (auto &ch : s){if (ch == 'I')ret.push_back(l++);elseret.push_back(r--);}ret.push_back(l /*r*/);return ret;}
};

15分发饼干 

 oj链接:分发饼干

class Solution
{
public:int findContentChildren(vector<int> &g, vector<int> &s){if (s.size() == 0)return 0;sort(g.begin(), g.end());sort(s.begin(), s.end());int i = 0, j = 0;while (i < g.size() && j < s.size()){if (g[i] <= s[j]){i++;j++;}elsej++;}return i;}
};

16最优除法

oj链接:最优除法

class Solution
{
public:string optimalDivision(vector<int> &nums){if (nums.size() == 1){return to_string(nums[0]);}else if (nums.size() == 2){return to_string(nums[0]) + "/" + to_string(nums[1]);}string ret = to_string(nums[0]) + "/(" + to_string(nums[1]);for (int i = 2; i < nums.size(); i++){ret += "/" + to_string(nums[i]);}ret += ")";return ret;}
};

17跳跃游戏Ⅱ

oj链接:跳跃游戏 II

// 解法1
class Solution
{
public:int jump(vector<int> &nums){int n = nums.size();vector<int> dp(n, INT_MAX);dp[0] = 0;for (int i = 1; i < n; i++){for (int j = 0; j < i; j++){if (nums[j] >= i - j)dp[i] = min(dp[i], dp[j] + 1);}}return dp[n - 1];}
};// 解法2
class Solution
{
public:int jump(vector<int> &nums){int n = nums.size();int left = 0, right = 0, ret = 0, maxpos = 0;while (left < n && right < n){if (maxpos >= n - 1)return ret;ret++;for (int i = left; i <= right; i++)maxpos = max(maxpos, nums[i] + i);left = right + 1;right = maxpos;}return ret;}
};

18跳跃游戏 

oj链接:跳跃游戏

与上面的思路一致,只不过在while循环更换判断条件即可! 

class Solution {
public:bool canJump(vector<int>& nums) {int n=nums.size(),left=0,right=0,maxpos=0;while(left<=right)//如果到不了n-1:left>right{if(maxpos>=n-1) return true;for(int i=left;i<=right;i++) maxpos=max(maxpos,nums[i]+i);left=right+1;right=maxpos;}return false;}
};

19加油站 

 oj链接:加油站

class Solution
{
public:int canCompleteCircuit(vector<int> &gas, vector<int> &cost){int n = gas.size();for (int i = 0; i < n; i++){int pos = 0, cnt = 0;for (; pos < n; pos++){int index = (pos + i) % n;cnt += gas[index] - cost[index];if (cnt < 0)break;}if (cnt >= 0)return i;i = i + pos;}return -1;}
};

20单调递增的数字 

 oj链接:单调递增的数字

class Solution
{
public:int monotoneIncreasingDigits(int n){string s = to_string(n);int i = 0, m = s.size();// 找递减位置while (i + 1 < m && s[i] <= s[i + 1])i++;if (i == m - 1)return n;cout << i << endl;// 回退找相等数的第一个while (i - 1 >= 0 && s[i - 1] == s[i])i--;s[i] -= 1;for (int j = i + 1; j < m; j++)s[j] = '9';return stoi(s);}
};

21坏了的计算器 

oj链接:坏了的计算器

class Solution
{
public:int brokenCalc(int startValue, int target){// 第一种情况//  if(target<=startValue) return startValue-target;// 第二种情况int cnt = 0;while (target > startValue){if (target % 2 != 0)target += 1;elsetarget /= 2;cnt++;}return cnt + startValue - target;}
};

22合并区间

oj链接:合并区间

class Solution
{
public:vector<vector<int>> merge(vector<vector<int>> &intervals){if (intervals.size() == 1)return intervals;sort(intervals.begin(), intervals.end()); // 左端点排序vector<vector<int>> ret;int n = intervals.size(), left = intervals[0][0], right = intervals[0][1];for (int i = 1; i < n; i++){int next_left = intervals[i][0], next_right = intervals[i][1];if (right >= next_left)right = max(right, next_right);else{ret.push_back({left, right});left = next_left;right = next_right;}if (i == n - 1)ret.push_back({left, right}); // 最后一组区间放到ret中}return ret;}
};

23无重叠区间 

oj链接:无重叠区间

class Solution
{
public:int eraseOverlapIntervals(vector<vector<int>> &intervals){if (intervals.size() == 1)return 0;sort(intervals.begin(), intervals.end());int n = intervals.size(), ret = 0, left = intervals[0][0], right = intervals[0][1];for (int i = 1; i < n; i++){int next_left = intervals[i][0], next_right = intervals[i][1];if (right > next_left){ret++;right = min(right, next_right); // 删除最大的right区间}else{left = next_left;right = next_right;}}return ret;}
};

24用最少量的箭引爆气球

oj链接:用最少数量的箭引爆气球

class Solution
{
public:int findMinArrowShots(vector<vector<int>> &points){if (points.size() == 1)return 1;sort(points.begin(), points.end());int left = points[0][0], right = points[0][1];int n = points.size(), ret = 1;for (int i = 1; i < n; i++){int next_left = points[i][0], next_right = points[i][1];if (right >= next_left){// 相交的区间去与下一个比// left=max(left,next_left);right = min(right, next_right);}else{// left=next_left;right = next_right;ret++;}}return ret;}
};

25整数替换

oj链接:整数替换

//解法1
class Solution
{
public:unordered_map<int, int> memo; // 不用vector:存不下int integerReplacement(int n){return MinCount(n);}int MinCount(long long n) // n越界处理{// 记忆化if (memo.count(n))return memo[n];if (n == 1){memo[n] = 0;return memo[n];}int ret = 0;if (n % 2 != 0)ret = min(MinCount(n + 1), MinCount(n - 1)) + 1;elseret = MinCount(n / 2) + 1;// 记忆化memo[n] = ret;return memo[n];}
};//解法2
class Solution
{
public:int integerReplacement(long long n){int ret = 0;while (n != 1){if (n % 2 == 0)n /= 2;else{if (n % 4 == 1 || n == 3)n -= 1;elsen += 1;}ret++;}return ret;}
};

26俄罗斯套娃信封问题

oj链接:俄罗斯套娃信封问题

class Solution
{
public:int maxEnvelopes(vector<vector<int>> &envelopes){int ret = 0, n = envelopes.size();sort(envelopes.begin(), envelopes.end());vector<int> dp(n, 1);for (int i = 0; i < n; i++){for (int j = 0; j < i; j++){if (envelopes[j][1] < envelopes[i][1] && envelopes[j][0] < envelopes[i][0])dp[i] = max(dp[i], dp[j] + 1);}ret = max(ret, dp[i]);}return ret;}
};

class Solution
{
public:int maxEnvelopes(vector<vector<int>> &envelopes){sort(envelopes.begin(), envelopes.end(), [](vector<int> &v1, vector<int> &v2){ return v1[0] == v2[0] ? v1[1] > v2[1] : v1[0] < v2[0]; });// 重排完序后就变成了最长递增子序列的问题(以每个区间的第二个数为基准)vector<int> ret;ret.push_back(envelopes[0][1]);int n = envelopes.size();for (int i = 1; i < n; i++){int t = envelopes[i][1];if (ret.back() < t)ret.push_back(t);else{int left = 0, right = ret.size() - 1;while (left < right){int middle = left + (right - left) / 2;if (ret[middle] >= t)right = middle;elseleft = middle + 1;}ret[left] = t;}}return ret.size();}
};

27可被三整除的最大和

oj链接:可被三整除的最大和

class Solution
{
public:int maxSumDivThree(vector<int> &nums){int sum = 0, ret = 0;for (auto &e : nums)sum += e;if (sum % 3 == 0)return sum;else if (sum % 3 == 1){// 定义y1和y2来求最小值和次小值 注意数据溢出问题int x = 0x3f3f3f3f3f, y1 = 0x3f3f3f3f3f, y2 = 0x3f3f3f3f3f;for (auto &e : nums){if (e % 3 == 1)x = min(x, e);else if (e % 3 == 2){if (e < y1){y2 = y1;y1 = e;}else if (y1 <= e && e <= y2)y2 = e;}}ret = max(sum - x, sum - y1 - y2);}else{int y = 0x3f3f3f3f3f, x1 = 0x3f3f3f3f3f, x2 = 0x3f3f3f3f3f;for (auto &e : nums){if (e % 3 == 1){if (e < x1){x2 = x1;x1 = e;}else if (x1 <= e && e <= x2)x2 = e;}else if (e % 3 == 2)y = min(y, e);}ret = max(sum - y, sum - x1 - x2);}return ret;}
};

相关文章:

贪心算法题

0简介 0.1什么是贪心算法 贪心算法是用贪婪(鼠目寸光)的角度&#xff0c;找到解决问题的最优解 贪心策略&#xff1a;(从局部最优 --> 整体最优) 1把解决问题的过程分为若干步&#xff1b; 2解决每一个问题时&#xff0c;都选择当前“看上去”最优的解法&#xff1b; 3“…...

Python 3 教程第33篇(MySQL - mysql-connector 驱动)

Python MySQL - mysql-connector 驱动 MySQL 是最流行的关系型数据库管理系统&#xff0c;如果你不熟悉 MySQL&#xff0c;可以阅读我们的 MySQL 教程。 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器。…...

23种设计模式之外观模式

目录 1. 简介2. 代码2.1 SelectFoodService (选择食品)2.2 PayService (支付服务)2.3 TakeService (制作服务)2.4 OrderService (下单服务)2.5 Food (食品)2.6 TackingSystem &#xff08;外观类&#xff09;2.7 Test &#xff08;测试类&#xff09; 3. 优缺点3. 总结 1. 简介…...

GateWay使用手册

好的&#xff0c;下面是优化后的版本。为了提高可读性和规范性&#xff0c;我对内容进行了结构化、简化了部分代码&#xff0c;同时增加了注释说明&#xff0c;便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖&#xff1a; <dependencies><!-- Spring Cloud Gate…...

MySQL1.0

1.数据库的三大范式 范式是为了使数据库设计更加合理&#xff0c;规范&#xff0c;减少数据冗余和数据不一致等问题指定的一系列规则。 第一范式&#xff1a;第一范式要求数据表中的每一列都是不可分割的原子数据项。例如&#xff1a;有一个学生信息表&#xff0c;包含 “学生…...

IDEA使用HotSwapHelper进行热部署

目录 前言JDK1.8特殊准备DECVM安装插件安装与配置参考文档相关下载 前言 碰到了一个项目&#xff0c;用jrebel启动项目时一直报错&#xff0c;不用jrebel时又没问题&#xff0c;找不到原因&#xff0c;又不想放弃热部署功能 因此思考能否通过其他方式进行热部署&#xff0c;找…...

简单web项目自定义部署Dockerfile

本意就是弄清楚如何做web自定义项目的镜像。 基础镜像是java:8u261-jdk&#xff0c;其中java路径为/opt/java webdemo1.0.0.1-SNAPSHOT.jar文件里面已经包含了lib文件。 可以设置PATH也可以不设置&#xff0c;但是建议设置JAVA_HOME FROM swr.cn-north-4.myhuaweicloud.com…...

基础Web安全|SQL注入

基础Web安全 URI Uniform Resource Identifier&#xff0c;统一资源标识符&#xff0c;用来唯一的标识一个资源。 URL Uniform Resource Locator&#xff0c;统一资源定位器&#xff0c;一种具体的URI&#xff0c;可以标识一个资源&#xff0c;并且指明了如何定位这个资源…...

SpringBoot -拦截器Interceptor、过滤器 Filter 及设置

Spring Boot拦截器&#xff08;Interceptor&#xff09;的概念 - 在Spring Boot中&#xff0c;拦截器是一种AOP的实现方式。它主要用于<font style"color:#DF2A3F;">拦截请求</font>&#xff0c;在请求处理之前和之后执行特定的代码逻辑。与过滤器不同的…...

C++小问题

怎么分辨const修饰的是谁 是限定谁不能被改变的&#xff1f; 在C中&#xff0c;const关键字的用途和位置非常关键&#xff0c;它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象&#xff0c;并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…...

avcodec_alloc_context3,avcodec_open2,avcodec_free_context,avcodec_close

avcodec_alloc_context3 是创建编解码器上下文&#xff0c;需要使用 avcodec_free_context释放 需要使用avcodec_free_context 释放 /** * Allocate an AVCodecContext and set its fields to default values. The * resulting struct should be freed with avcodec_free_co…...

强化学习的几个主要方法(策略梯度、PPO、REINFORCE实现等)(下)

由于平台字数限制&#xff0c;上文&#xff1a;https://blog.csdn.net/ooblack/article/details/144198538 4. PPO算法 近端策略优化&#xff08;proximal policy optimization&#xff0c;PPO&#xff09;算法是OpenAI的默认强化学习算法&#xff0c;在RLHF中也用到了这个算…...

计算机网络:IP协议详细讲解

目录 前言 一、IP网段划分 二、IP报头 三、解决IP地址不足-->NAT技术 前言 在之前&#xff0c;我们学习了传输层中的TCP和UDP&#xff0c;重点是TCP协议&#xff0c;他帮我们解决具体到主机的哪个应用&#xff08;端口&#xff09;、传输的可靠&#xff08;序列号、校验和…...

2024信创数据库TOP30之华为Gauss DB

近日&#xff0c;由DBC联合CIW/CIS共同发布的“2024信创数据库TOP30”榜单正式揭晓&#xff0c;汇聚了国内顶尖的数据库企业及其产品&#xff0c;成为展示中国信创领域技术实力与发展潜力的重要平台。在这份榜单中&#xff0c;华为的GaussDB凭借其卓越的技术实力、广泛的行业应…...

在线家具商城基于 SpringBoot:设计模式与实现方法探究

第3章 系统分析 用户的需求以及与本系统相似的在市场上存在的其它系统可以作为系统分析中参考的资料&#xff0c;分析人员可以根据这些信息确定出本系统具备的功能&#xff0c;分析出本系统具备的性能等内容。 3.1可行性分析 尽管系统是根据用户的要求进行制作&#xff0c;但是…...

九、Spring Boot集成Spring Security之授权概述

文章目录 往期回顾&#xff1a;Spring Boot集成Spring Security专栏及各章节快捷入口前言一、授权概述二、用户权限三、用户授权流程三、Spring Security授权方式1、请求级别授权2、方法级别授权 往期回顾&#xff1a;Spring Boot集成Spring Security专栏及各章节快捷入口 Spr…...

python之Flask入门—路由参数

语法&#xff1a; /routerName/<string:parameter_name> 其中&#xff1a;routerName代表路由名称<>中的string是参数类型&#xff0c;parameter_name为参数名称 参数类型&#xff1a; &#xff08;1&#xff09; string 接收任何没有斜杠&#xff08;/&#x…...

txt地图格式处理

1、txt地图格式 [属性描述] 坐标系2000国家大地坐标系 几度分带3 投影类型高斯克吕格 计量单位米 带号38 精度0.001 转换参数,,,,,, [地块坐标] 5,475.888,1,测试地块1,面,J50G077061,公路用地,地下, J1,1,113.22222222222222,23.129111721551794 J2,1,113.2722314…...

《数据挖掘:概念、模型、方法与算法(第三版)》

嘿&#xff0c;数据挖掘的小伙伴们&#xff01;今天我要给你们介绍一本超级实用的书——《数据挖掘&#xff1a;概念、模型、方法与算法》第三版。这本书是数据挖掘领域的经典之作&#xff0c;由该领域的知名专家编写&#xff0c;系统性地介绍了在高维数据空间中分析和提取大量…...

GitLab CVE-2024-8114 漏洞解决方案

漏洞 ID 标题严重等级CVE ID通过 LFS 令牌提升权限高CVE-2024-8114 GitLab 升级指南GitLab 升级路径查看版本漏洞查询 漏洞解读 此漏洞允许攻击者使用受害者的个人访问令牌&#xff08;PAT&#xff09;进行权限提升。影响从 8.12 开始到 17.4.5 之前的所有版本、从 17.5 开…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...

李沐--动手学深度学习--GRU

1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...