ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-3-21 剑指offer day38

2022-03-21 13:35:37  阅读:161  来源: 互联网

标签:丑数 21 day38 offer int ArrayList queue 2022 序列


题1:

JZ49 丑数

描述

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。   数据范围:0 \le n \le 20000≤n≤2000 要求:空间复杂度 O(n)O(n) , 时间复杂度 O(n)O(n)  
 1 import java.util.*;
 2 public class Solution {
 3     public int GetUglyNumber_Solution(int index) {
 4         // 2^1 3^1 5^1
 5         if (index==0) return 0;
 6         PriorityQueue<Integer> queue=new PriorityQueue<>();
 7         queue.offer(1);
 8         int count=1;
 9         while (count<index) {
10             int t=queue.poll();
11             if (!queue.contains(2*t)&&2*t>0){
12                 queue.offer(2*t);
13             }
14             if (!queue.contains(3*t)&&3*t>0){
15                 queue.offer(3*t);
16             }
17             if (!queue.contains(5*t)&&5*t>0){
18                 queue.offer(5*t);
19             }
20             count++;
21         }
22         return queue.poll();
23     }
24 }

思路:优先队列对生成的丑数排序,再通过丑数生成下一个丑数。

 

题2:

JZ74 和为S的连续正数序列

 

描述

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?   数据范围:0 < n \le 1000<n≤100
进阶:时间复杂度 O(n)O(n)

返回值描述:

输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序
 1 import java.util.ArrayList;
 2 public class Solution {
 3     public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
 4        // 1-n (n+1)*n/2 
 5         ArrayList<ArrayList<Integer>> ans=new ArrayList<>();
 6         for (int i=0;i<=sum/2;i++) {
 7             for (int j=i+1;j<=sum/2+1;j++) {
 8                 if (j*(j+1)/2-i*(i+1)/2==sum) {
 9                     ArrayList<Integer> list=new ArrayList<>();
10                     for (int k=i+1;k<=j;k++) list.add(k);
11                     if (list.size()>=2) ans.add(list);
12                 }else if (j*(j+1)/2-i*(i+1/2)>sum){
13                     break;
14                 }
15             }
16         }
17         return ans;
18     }
19 }

思路:利用求和公式计算序列和。

标签:丑数,21,day38,offer,int,ArrayList,queue,2022,序列
来源: https://www.cnblogs.com/benbicao/p/16034262.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有