news 2026/8/14 15:42:51

测试开发学习中。。。。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
测试开发学习中。。。。

1.数组去重,原地修改返回新长度

int removeDuplicates(int nums[], int size) { if (size == 0) return 0; // 慢指针从0开始,第一个元素必然保留 int slow = 0; for (int fast = 1; fast < size; fast++) { // 快慢值不同,说明是新元素 if (nums[fast] != nums[slow]) { slow++; nums[slow] = nums[fast]; // 原地覆盖 } } // slow是下标,长度需要+1 return slow + 1; }

2.移动零,把数组全部 0 挪到末尾,其他元素顺序不变

void moveZeroes(int nums[], int size) { // slow:存放非0元素的下一个位置 int slow = 0; // fast遍历数组,找所有非0数字 for (int fast = 0; fast < size; fast++) { if (nums[fast] != 0) { // 把非0数字挪到slow位置 nums[slow] = nums[fast]; slow++; } } // slow前面全是非0,slow到末尾全部填0 for (int i = slow; i < size; i++) { nums[i] = 0; } }

3.合并区间,将重叠区间合并

#include <stdlib.h> /* 比较函数:按照区间左端点排序 */ int cmp(const void *a, const void *b) { int *x = *(int **)a; int *y = *(int **)b; return x[0] - y[0]; } /** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned in *returnColumnSizes. */ int** merge(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize, int** returnColumnSizes) { if (intervalsSize == 0) { *returnSize = 0; *returnColumnSizes = NULL; return NULL; } /* 1. 按照左端点排序 */ qsort(intervals, intervalsSize, sizeof(int *), cmp); /* 2. 开辟结果数组 */ int **result = (int **)malloc(sizeof(int *) * intervalsSize); *returnColumnSizes = (int *)malloc(sizeof(int) * intervalsSize); int count = 0; /* 3. 合并区间 */ for (int i = 0; i < intervalsSize; i++) { /* 第一个区间,或者没有重叠 */ if (count == 0 || intervals[i][0] > result[count - 1][1]) { result[count] = (int *)malloc(sizeof(int) * 2); result[count][0] = intervals[i][0]; result[count][1] = intervals[i][1]; (*returnColumnSizes)[count] = 2; count++; } else { /* 有重叠,更新右端点 */ if (intervals[i][1] > result[count - 1][1]) { result[count - 1][1] = intervals[i][1]; } } } *returnSize = count; return result; }

4.给定数组,输出全部子数组,求每个子数组最大最小差值之和

class Solution { public: long long subArrayRanges(vector<int>& nums) { long long ans = 0; int n = nums.size(); for (int i = 0; i < n; i++) { int maxVal = nums[i]; int minVal = nums[i]; for (int j = i; j < n; j++) { maxVal = max(maxVal, nums[j]); minVal = min(minVal, nums[j]); ans += maxVal - minVal; } } return ans; } };

5.三数之和,数组找三元组和为 0

int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; } /** * @param nums 输入数组 * @param numsSize 数组长度 * @param returnSize 返回结果二维数组行数 * @param returnColumnSizes 每行元素个数(固定为3) * @return 二维数组存储所有三元组 */ int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) { *returnSize = 0; if (numsSize < 3) return NULL; // 排序 qsort(nums, numsSize, sizeof(int), cmp); // 动态分配结果空间,最多 n^2 组,这里预分配足够大 int maxAns = numsSize * numsSize; int** res = (int**)malloc(maxAns * sizeof(int*)); *returnColumnSizes = (int*)malloc(maxAns * sizeof(int)); for (int i = 0; i < numsSize; i++) { int a = nums[i]; // 第一个数大于0,后面不可能和为0 if (a > 0) break; // 去重:和上一个a相同,跳过 if (i > 0 && nums[i] == nums[i - 1]) continue; int l = i + 1; int r = numsSize - 1; while (l < r) { int b = nums[l]; int c = nums[r]; int sum = a + b + c; if (sum == 0) { // 存入答案 res[*returnSize] = (int*)malloc(3 * sizeof(int)); res[*returnSize][0] = a; res[*returnSize][1] = b; res[*returnSize][2] = c; (*returnColumnSizes)[*returnSize] = 3; (*returnSize)++; // 跳过左侧重复 while (l < r && nums[l] == nums[l + 1]) l++; // 跳过右侧重复 while (l < r && nums[r] == nums[r - 1]) r--; l++; r--; } else if (sum < 0) { l++; // 和太小,左指针右移 } else { r--; // 和太大,右指针左移 } } } return res; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 15:42:47

基于linux上的终端贪吃蛇

摘要&#xff1a;不依赖图形库&#xff0c;用 C 语言在 Linux 终端实现贪吃蛇。本文从墙体绘制、蛇节点打印与移动、非阻塞键盘输入、食物随机生成到碰撞检测&#xff0c;逐步拆解核心逻辑&#xff0c;并附上关键代码与常见问题解决方案。前言&#xff1a;本文面向具备 C 语言基…

作者头像 李华
网站建设 2026/8/14 15:36:50

Socket编程:客户端与服务器通信全解析(网络编程)

客⼾端和服务端 服务端&#xff1a;在常⻅的⽹络数据传输场景下&#xff0c;把提供服务的⼀⽅进程&#xff0c;称为服务端&#xff0c;可以提供对外服务。 客⼾端&#xff1a;获取服务的⼀⽅进程&#xff0c;称为客⼾端。Socket套接字概念Socket套接字&#xff0c;是由系统提供…

作者头像 李华
网站建设 2026/8/14 15:31:44

SAP Task Gateway 扩展实战,如何为统一任务入口增加新的 Provider

在实际的 SAP Fiori 审批场景里,经常会碰到一种很现实的需求。公司已经使用 My Inbox 统一处理采购订单审批、销售折扣审批、费用审批以及各种传统 SAP Business Workflow 工作项,但后来又接入了一套新的流程系统。这套系统也有自己的任务、处理人、状态和审批动作,业务希望…

作者头像 李华