• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[Swift]LeetCode932.漂亮数组|BeautifulArray

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9865478.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

For some fixed N, an array A is beautiful if it is a permutation of the integers 1, 2, ..., N, such that:

For every i < j, there is no k with i < k < j such that A[k] * 2 = A[i] + A[j].

Given N, return any beautiful array A.  (It is guaranteed that one exists.)

Example 1:

Input: 4
Output: [2,1,4,3]

Example 2:

Input: 5
Output: [3,1,2,5,4]

Note:

  • 1 <= N <= 1000

对于某些固定的 N,如果数组 A 是整数 1, 2, ..., N 组成的排列,使得:

对于每个 i < j,都不存在 k 满足 i < k < j 使得 A[k] * 2 = A[i] + A[j]

那么数组 A 是漂亮数组。

给定 N,返回任意漂亮数组 A(保证存在一个)。

示例 1:

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

示例 2:

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

提示:

  • 1 <= N <= 1000

16ms

 1 class Solution {
 2     func beautifulArray(_ N: Int) -> [Int] {
 3         var a:[Int] = [Int](repeating: 0,count: N)
 4         dfs(1, 0, N, &a,0)
 5         for i in 0..<N
 6         {
 7             a[i] += 1
 8         }
 9         return a
10     }
11     //深度优先搜索。DFS即Depth First Search.
12     //对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次
13     func dfs(_ d:Int,_ m:Int,_ n: Int,_ a:inout [Int],_ off:Int) -> Int
14     {
15         var off = off
16         if m >= n {return off}
17         if m + d >= n
18         {
19             a[off] = m
20             off += 1
21             return off
22         }
23         for i in 0..<2
24         {
25             off = dfs(d*2, m+d*i, n, &a, off)
26         }
27         return off
28     }
29 }

16ms

 1 class Solution {
 2     func beautifulArray(_ N: Int) -> [Int] {
 3         var res: [Int] = []
 4         res.append(1)
 5         while res.count < N {
 6             var temp: [Int] = []
 7             for i in res {
 8                 if i * 2 - 1 <= N {
 9                     temp.append(i * 2 - 1)
10                 }
11             }
12             for i in res {
13                 if i * 2 <= N {
14                     temp.append(i * 2)
15                 }
16             }
17             res = temp
18         }
19         return res
20     }
21 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
《TheSwiftProgrammingLanguage》的笔记-第27页发布时间:2022-07-13
下一篇:
[Swift]LeetCode371.两整数之和|SumofTwoIntegers发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap