【程序员面试金典】面试题 10.11. 峰与谷

  • 题目描述
  • 解题思路

题目描述

描述:在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。

示例:

输入: [5, 3, 1, 2, 3]
输出: [5, 1, 3, 2, 3]

提示:

nums.length <= 10000

解题思路

思路1:最直观的想法是,先将数组排序,接着隔一个交换相邻的两个元素。比如1 2 3 4 5 6,那么交换1和2得到2 1 3 4 5 6,接着交换3和4得到2 1 4 3 5 6,最后交换5和6得到2 1 4 3 6 5即可满足峰与谷。

void wiggleSort(vector<int>& nums)
{sort(nums.begin(),nums.end());for(int i=0;i+1<nums.size();i+=2){swap(nums[i],nums[i+1]);}
}

总结:先排序再打散!

【程序员面试金典】面试题 10.11. 峰与谷相关推荐

  1. 程序员面试金典 - 面试题 10.11. 峰与谷

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 在一个整数数组中,"峰& ...

  2. 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)

    1. 题目 在一个整数数组中,"峰"是大于或等于相邻整数的元素,相应地,"谷"是小于或等于相邻整数的元素. 例如,在数组{5, 8, 2, 6, 3, 4, 3 ...

  3. 程序员面试金典 - 面试题 10.03. 搜索旋转数组

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 搜索旋转数组.给定一个排序后的数组 ...

  4. [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]

    [问题描述][简单] [解答思路] 边界问题 k=0 ,不能产生跳水板,返回空数组 shorter 等于longer,只有一种跳水板,返回longerk 思路 一般情况,k块木板,k种可能 跳水板的长 ...

  5. 程序员面试金典 - 面试题 10.03. 搜索旋转数组(二分查找)

    1. 题目 搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详. 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小 ...

  6. 程序员面试金典 - 面试题 08.11. 硬币(背包DP)

    文章目录 1. 题目 2. 解题 1. 题目 硬币.给定数量不限的硬币,币值为25分.10分.5分和1分,编写代码计算 n 分有几种表示法.(结果可能会很大,你需要将结果模上1000000007) 示 ...

  7. 程序员面试金典 - 面试题 10.10. 数字流的秩(map/树状数组)

    文章目录 1. 题目 2. 解题 2.1 map 2.2 树状数组 1. 题目 假设你正在读取一串整数.每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数). 请实现数据结构和算法来 ...

  8. 程序员面试金典 - 面试题 10.02. 变位词组(哈希map)

    1. 题目 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起. 变位词是指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", ...

  9. 程序员面试金典 - 面试题 16.11. 跳水板(数学)

    1. 题目 你正在使用一堆木板建造跳水板. 有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer. 你必须正好使用 k 块木板.编写一个方法,生成跳水板所有可能的 ...

  10. 程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)

    1. 题目 稀疏数组搜索.有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置. 示例1:输入: words = ["at", "" ...

最新文章

  1. @ResponseBody 和 @RequestBody 的作用
  2. php中设定一个全局异常处理。全局catch。默认catch。默认异常处理
  3. 【移动通信】移动通信基础
  4. 常使用的webserver地址
  5. 搞定系统设计 00:开篇
  6. 如何在命令中授权给MySQL_MySQL如何使用授权命令grant
  7. 怎么调节手机的刷新率_二分钟科普:手机上的“高刷新率”
  8. 【多题合集】【loliの模拟赛】排列组合大套餐
  9. matlab程序 surf算法,【求大神帮忙,surf算法源代码解析】
  10. matlab在电气信息类专业中的应用,MATLAB在电气信息类专业中的应用(高等学校应用型特色规划...
  11. C 和 CPP 混合代码cmath编译出错
  12. python网络爬虫系列教程——python网络数据爬虫误区,让你的爬虫更像人类
  13. linux 内核 内存管理 初始化 页表
  14. paip.python错误解决13
  15. 三菱GXWorks2 监视梯形图状态
  16. CentOS install btsync
  17. win10系统realtek高清晰音频管理器有什么用
  18. 常用的端口号(port number)
  19. [JPA错误]javax.persistence.EntityNotFoundException: Unable to find xxx
  20. 大前研一,柳井正《放胆去闯》读书笔记

热门文章

  1. android 的MVP模式的介绍
  2. Android 桌面小组件
  3. Jquery制作可以绑定的表格
  4. 大学的老师都在干嘛去了
  5. matplotlib 绘图颜色自动选择
  6. python 3d气泡图 python 3d 散点图
  7. Vue3 学习笔记 —— 父子组件传值、插槽、提供/注入、兄弟组件传值、mitt
  8. 【信息系统项目管理师】2023年5月软考高级信息系统项目管理师考试总结
  9. 自定义VS程序异常处理及调试Dump文件(一)
  10. 【广告算法工程师入门 14】机制设计-带有保留价的拍卖与最优保留价