golang力扣leetcode 969.煎饼排序

简介: golang力扣leetcode 969.煎饼排序

969.煎饼排序

969.煎饼排序

题解

找到最大的下标,反转,此时最大的在第一个位置,再把整个翻转,此时最大的排到最后了,再找次大的,以此类推

代码

package main
func pancakeSort(arr []int) []int {
  var ans []int
  for i := len(arr); i >= 0; i-- {
    maxIdx := 0
    for i, v := range arr[:i] {
      if v > arr[maxIdx] {
        maxIdx = i
      }
    }
    if maxIdx == i-1 {
      continue
    }
    reverse(arr, maxIdx)
    ans = append(ans, maxIdx+1)
    reverse(arr, i-1)
    ans = append(ans, i)
  }
  return ans
}
func reverse(arr []int, tail int) {
  for i, j := 0, tail; i < j; i, j = i+1, j-1 {
    arr[i], arr[j] = arr[j], arr[i]
  }
}
目录
相关文章
|
1月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
1月前
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
|
1月前
|
存储 算法 Java
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
LeetCode初级算法题:反转链表+统计N以内的素数+删除排序数组中的重复项Java详解
18 0
|
1月前
|
算法 索引 Python
【Leetcode刷题Python】34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
解决LeetCode "在排序数组中查找元素的第一个和最后一个位置" 问题的方法。第一种方法是使用两次二分查找,首先找到目标值的最左边界,然后找到最右边界。第二种方法是利用Python的list.index()方法,先正序找到起始位置,再逆序找到结束位置,并给出了两种方法的Python实现代码。
43 0
|
3月前
力扣随机一题 哈希表 排序 数组
力扣随机一题 哈希表 排序 数组
27 1
|
3月前
|
Go
【golang】golang 字符串切片排序
【golang】golang 字符串切片排序
48 1
|
3月前
|
算法
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题:翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
|
3月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)
|
2月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
20 0
|
2月前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
20 0