- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
题目地址:https://leetcode.com/problems/distinct-subsequences-ii/description/
Given a string S
, count the number of distinct, non-empty subsequences of S
.
Since the result may be large, return the answer modulo 10^9 + 7
.
Ví dụ 1:
Input: "abc" Output: 7 Explanation: The 7 distinct subsequences are "a", "b", "c", "ab", "ac", "bc", and "abc".
Example 2:
Input: "aba" Output: 6 Explanation: The 6 distinct subsequences are "a", "b", "ab", "ba", "aa" and "aba".
Example 3:
Input: "aaa" Output: 3 Explanation: The 3 distinct subsequences are "a", "aa" and "aaa".
Note:
1、 Scontainsonlylowercaseletters.;
2、 1<=S.length<=2000;
计算一个字符串中,有多少种不同的子序列。
周赛的第四题,不会做,还是因为我的动态规划太弱了。。
瞻仰一下寒神的做法吧,膜拜![C++/Java/Python] 4 lines O(N) Time, O(1) Spaceopen in new window.
使用一个endswith[26]数组,保存的是有多少个子序列以i结尾。则,当前总共有N = sum(endswith)
个不同的子序列,当我们新增加一个字符c时,相当于在以前每个结尾的位置后面又增添了一个新的字符,所以现在有了N个以c结尾的不同的子序列了。
所以,我们遍历一遍s,更新的方式是end[c] = sum(end) + 1
。加一是因为c本身也是一个子序列。
比如举个例子。
Input: "aba" Current parsed: "ab" endswith 'a': ["a"] endswith 'b': ["ab","b"] "a" -> "aa" "ab" -> "aba" "b" -> "ba" "" -> "a" endswith 'a': ["aa","aba","ba","a"] endswith 'b': ["ab","b"] result: 6
时间复杂度是O(26N),空间复杂度是O(1)。
class Solution(object): def distinctSubseqII(self, S): """ :type S: str :rtype: int """ nums = [0] * 26 for s in S: nums[ord(s) - ord("a")] = (sum(nums) + 1) % (10 ** 9 + 7) return sum(nums) % (10 ** 9 + 7)
1 2 3 4 5 6 7 8 9 10
DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有
本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发
Tôi có bảng như thế này----------------------------------------- id kích thước tiêu đề ưu tiên
Ứng dụng của tôi chỉ chứa quảng cáo biểu ngữ trong các Hoạt động khác nhau (4 Hoạt động). Vậy câu hỏi của tôi là, tôi có thể sử dụng một ID đơn vị quảng cáo cho tất cả các quảng cáo biểu ngữ không? Hoặc sử dụng các đơn vị quảng cáo khác nhau cho mỗi Hoạt động
Tôi có một danh sách tùy ý các danh sách số tùy ý (nhưng thống nhất). (Chúng là tọa độ ranh giới của các thùng trong không gian n, mà tôi muốn đánh dấu các góc của chúng, nhưng điều đó không quan trọng.) Tôi muốn tạo một danh sách tất cả các tổ hợp có thể có. Vì vậy: [[1,2], [3,4],[5,6]] tạo ra [[1
Tôi vừa mới bắt đầu học Java ở trường và đang thử nghiệm các điều khiển và đồ họa tùy chỉnh. Tôi hiện đang làm việc trên một mẫu khóa và lúc đầu mọi thứ đều ổn nhưng đột nhiên nó không vẽ chính xác. Tôi đã thay đổi một số mã, nhưng khi tôi thấy lỗi, tôi đã ngay lập tức thay đổi lại (hoàn tác, ftw), nhưng
Tôi gặp phải một vấn đề nhỏ khi sử dụng Group By With Rollup khi lấy số lượng riêng biệt. Vấn đề là bản tóm tắt Rollup chỉ là tổng số giá trị Distinct trong tất cả các nhóm, không phải tất cả
Cách này không hiệu quả: select count(distinct colA, colB) from mytable Tôi biết tôi có thể sửa lỗi này dễ dàng bằng lệnh select kép. chọn số lượng(*) từ (
Câu hỏi này đã có câu trả lời ở đây: JavaScript regex whitespace characters (5 câu trả lời) Đã đóng 2 năm trước. Bạn có thể giải thích cho tôi tại sao tôi nhận được văn bản so sánh sai ===
Câu hỏi này đã có câu trả lời: 奥git _a (56 câu trả lời) Đã đóng 9 năm trước. Tôi đã được yêu cầu viết một hàm sortByFoo trong Javascript để phản hồi chính xác cho bài kiểm tra này: // Không bị sập
Vì vậy, tôi phải nói rằng SQL là điểm yếu nhất của tôi với tư cách là một nhà phát triển. Có lẽ điều tôi đang cố gắng thực hiện khá đơn giản. Tôi có thứ gì đó như thế này (đây không phải là mô hình thực tế, nhưng để dễ hiểu và không mất quá nhiều thời gian giải thích, tôi đã đưa ra một mô hình mô phỏng chính xác những gì tôi phải sử dụng
Câu hỏi này đã có câu trả lời tại đây: Từ khóa "this" hoạt động như thế nào? (22 câu trả lời) Đã đóng 3 năm trước. Tóm lại: Tại sao việc gọi hàm trực tiếp và truyền chúng theo tham chiếu lại quan trọng hơn khi sử dụng Đối tượng?
Câu hỏi này đã có câu trả lời ở đây: Đã đóng cách đây 12 năm. Có thể trùng lặp: sự khác biệt giữa toán tử dấu chấm (.) và (- là gì
Tôi không thực sự hiểu chuyện gì đang xảy ra ở đây nhưng: Khi tôi thực hiện điều này: colorIndex += len - stopPos; for(int m = 0; m < len - stopPos; m++) { c
Cách tốt nhất để nghĩ về hàm Group By trong MySQL là gì? Tôi đang viết truy vấn MySQL để trích xuất dữ liệu trong bảng trục trong Excel thông qua kết nối ODBC để người dùng có thể dễ dàng truy cập dữ liệu. Ví dụ, tôi có:
SQL tôi muốn là thế này: SELECT week_no, type, SELECT count(distinct user_id) FROM group WHERE pts > 0 FROM bas
Bảng lưu trữ: +--+-------+--------+ |id|name |date | +--+-------+-------+ |1 |x |Ma
Đối với Chrome và ff, khi nói đến lệnh ie đáng sợ, tập lệnh này hoạt động hoàn hảo. Hàm vấn đề getY(oElement) { var curtop = 0; if (oElem
Tôi không thể cung cấp mã ngay bây giờ vì tôi đang phát triển ý tưởng trong đầu và tìm hiểu trên Internet. Tôi đã học về giao tiếp giữa các tiến trình và sử dụng bộ nhớ chia sẻ để chia sẻ dữ liệu (cụ thể là cấu trúc) giữa các tiến trình. Tuy nhiên, khi sử dụng fork(
Tôi muốn sử dụng các chức năng khác nhau trong bộ sưu tập người dùng. Trong shell mongo, tôi có thể sử dụng như thế này: db.users.distinct("name"); trong đó name là trường bộ sưu tập cần phân biệt. Tôi cũng muốn
Danh sách nastava_izvjestaj = new List(); var data_context = new DataEvidencijaDataContext();
Tôi có Ransack Search và Foundation trong ứng dụng Rails của mình, css cục bộ hiển thị tốt, trong khi ứng dụng tương tự khi đưa vào sản xuất lại có một điểm kỳ lạ: mọi thứ khác trong ứng dụng đều giống hệt nhau. Tôi đang sử dụng Chrome và Safari
Tôi là một lập trình viên xuất sắc, rất giỏi!