成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

526. Beautiful Arrangement and 254. Factor Combina

I_Am / 3437人閱讀

摘要:用的思想,加上題目的特殊意思,來解決問題。如果個數(shù)字,有種結(jié)果。這里對原題多加了一個輸出的要求,代碼如下。也是為了去重,兩個分解的解法是對稱的,乘法對稱的重點就是

用combination的思想,加上題目的特殊意思,來解決問題。

526 Beautiful Arrangement

Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is constructed by these N numbers successfully if one of the following is true for the ith position (1 ≤ i ≤ N) in this array:

1.The number at the ith position is divisible by i.
2.i is divisible by the number at the ith position.

如果3個數(shù)字,有3種結(jié)果。
[1, 2, 3]
[2, 1, 3]
[3, 2, 1]
3
這里對Leetcode原題多加了一個輸出的要求,代碼如下。
public Solution{
    int count = 0;

    public int countArrangement(int N) {
        if (N == 0) return 0;
        helper(N, 1, new int[N + 1], new ArrayList());
        return count;
    }

    private void helper(int N, int pos, int[] used, List list) {
        if (pos > N) {
            count++;
            System.out.println(list.toString());
            return;
        }

        for (int i = 1; i <= N; i++) {
            if (used[i] == 0 && (i % pos == 0 || pos % i == 0)) {
                used[i] = 1;
                list.add(i);
                helper(N, pos + 1, used, list);
                list.remove(list.size()-1);
                used[i] = 0;
            }
        }
    }
}

254 Factor Combinations

比如給出的數(shù)字是12,質(zhì)因數(shù)分解的結(jié)果如下:
[
  [2, 6],
  [2, 2, 3],
  [3, 4]
]
public class Solution {
    public List> getFactors(int n) {
        List> res = new ArrayList>();
        if(n <= 3) return res;
        dfs(n, res, new ArrayList(), -1);
        return res;
    }
    
    public void dfs(int n, List> res, List path, int lower){
        // 和一般combination不同的是,每一步都要導(dǎo)入到結(jié)果中。
        if(lower != -1){
            path.add(n);
            res.add(new ArrayList<>(path));
            path.remove(path.size()-1);
        }
        
        // lower 是為了解決重復(fù)分解的問題,比如12 = 2*2*3 = 3*2*2,但是后一個是重復(fù)的, 所以分解之后factor不能變小。
        // upper 也是為了去重,12 = 3*4 = 4*3, 兩個分解的解法是對稱的,乘法對稱的重點就是sqrt(n).
        int upper = (int) Math.sqrt(n);
        for(int i=Math.max(2, lower); i<= upper; i++){
            if(n%i == 0){
                path.add(i);
                dfs(n/i, res, path, i);
                path.remove(path.size()-1);
            }
        }
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66950.html

相關(guān)文章

  • Leetcode 相似題只有題號不含代碼。

    找出string里的單詞。 186. Reverse Words in a String II, 434. Number of Segments in a String combination類型題 77. Combinations 39. Combination Sum 40. Combination Sum II 216. Combination Sum III 494. Target S...

    StonePanda 評論0 收藏0
  • [LeetCode] 526. Beautiful Arrangement

    Problem Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is constructed by these N numbers successfully if one of the following is true for the ith position ...

    GeekQiaQia 評論0 收藏0
  • [LeetCode] 254. Factor Combinations

    Problem Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4.Write a function that takes an integer n and return all possible combinations of its factors. Note: You ...

    Leck1e 評論0 收藏0
  • 容器最大盛水量

    摘要:容器最大盛水量給定個非負整數(shù),,,,其中每個表示坐標,處的點。找到兩條線,它們與軸一起形成一個容器,使得容器含有最多的水。 容器最大盛水量 Container With Most Water 給定n個非負整數(shù)a1,a2,...,an,其中每個表示坐標(i,ai)處的點。 繪制n條垂直線,使得線i的兩個端點在(i,ai)和(i,0)處。 找到兩條線,它們與x軸一起形成一個容器,使得容器...

    luckyw 評論0 收藏0
  • 如何使用ABSL代碼調(diào)用Web service

    摘要:需求在里創(chuàng)建,然后通過代碼消費。創(chuàng)建一個新的基于這個標準的創(chuàng)建一個因為我是在當(dāng)前系統(tǒng)上的里調(diào)用當(dāng)前系統(tǒng)提供的,所以選擇當(dāng)然這個的也是需要在這個地方自己創(chuàng)建一個的可以維護成給該創(chuàng)建的維護的將該的下載到本地?;谇耙徊絼?chuàng)建的創(chuàng)建一個。 需求:在C4C UI里創(chuàng)建web service(maintain ticket),然后通過ABSL代碼消費。1. 創(chuàng)建一個新的Communication ...

    ASCH 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<