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

测试开发学习中。。。。

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; }
http://www.cnnetsun.cn/news/4025278.html

相关文章:

  • 基于linux上的终端贪吃蛇
  • 【论文翻译】SCNET: SPARSE COMPRESSION NETWORK FOR MUSIC SOURCE SEPARATION
  • 华硕笔记本控制工具G-Helper打不开?完整启动排查手册:5招让双击重新有反应
  • Socket编程:客户端与服务器通信全解析(网络编程)
  • 如何为Cocos Creator +微信小游戏项目建立一套可长期执行的性能治理体系?
  • SAP Task Gateway 扩展实战,如何为统一任务入口增加新的 Provider
  • Win11Debloat实测:半小时卸载预装软件、关闭遥测,新电脑终于不卡了
  • 性能优化:连接池、缓存、批量处理
  • 开源的报文分析平台:12 个规则库全接引擎,附在线体验
  • 从一句主题到一支成片:Pixelle-Video 零门槛全自动短视频引擎
  • Prompts原语:标准化提示词模板
  • 正则分组/php5版本下preg_replace /e模式下的代码执行
  • Kimi LeetCode 3906. 统计网格路径中好整数的数目 Rust实现
  • maxGraph零基础入门:纯客户端JavaScript图表库,零成本5分钟画出可交互流程图
  • Portainer:Docker可视化Web管理面板的新手首选方案
  • 华硕笔记本控制权争夺战:G-Helper一天上手,性能、散热与续航全面解放
  • Dism++完整上手指南:免费清理系统垃圾、修复更新失败的终极优化工具,5分钟就能见效
  • 【Proteus仿真设计】基于stm32单片机的智能家居系统设计
  • Dify 企业级实验(03):事件驱动流水线——Webhook 与定时触发如何组成异步处理链?
  • 一条命令给 Win11 系统优化瘦身,Win11Debloat 把预装软件和广告一次清干净
  • Windows APK安装器完全指南:免模拟器在电脑上安装安卓应用
  • SOLIDWORKS 正版软件价格全解析:商业版、教育版、科研版报价指南
  • 相机缓冲数据三种数据格式(数组、指针new、vector)
  • 贵州微信网站建设全流程解析:中小企业如何利用私域流量实现低成本高增长
  • 预算不够不用全套打包!生产自动化与 AI 管理支持分开采购、分步落地
  • 永嘉网站建设几年才见效?资深从业者揭秘低成本高效获客真相
  • 深入解析南海网站建设报价背后的逻辑与行业内幕揭秘
  • 揭秘城乡规划建设网站背后的真相:为什么它不仅是信息枢纽更是城市发展的灵魂指南
  • 范县网站建设企业为何需要专业的数字化升级之路?本地老板必看攻略
  • 南阳网站建设价格揭秘:为什么有人几百元有人几万元?