Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3f83142

Browse files
refactor 481
1 parent 53edd7e commit 3f83142

File tree

1 file changed

+1
-29
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+1
-29
lines changed

src/main/java/com/fishercoder/solutions/_481.java

+1-29
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,12 @@
11
package com.fishercoder.solutions;
22

3-
/**
4-
* 481. Magical String
5-
*
6-
* A magical string S consists of only '1' and '2' and obeys the following rules:
7-
8-
The string S is magical because concatenating the number of contiguous occurrences of characters '1' and '2' generates the string S itself.
9-
10-
The first few elements of string S is the following: S = "1221121221221121122……"
11-
12-
If we group the consecutive '1's and '2's in S, it will be:
13-
14-
1 22 11 2 1 22 1 22 11 2 11 22 ......
15-
16-
and the occurrences of '1's or '2's in each group are:
17-
18-
1 2 2 1 1 2 1 2 2 1 2 2 ......
19-
20-
You can see that the occurrence sequence above is the S itself.
21-
22-
Given an integer N as input, return the number of '1's in the first N number in the magical string S.
23-
24-
Note: N will not exceed 100,000.
25-
26-
Example 1:
27-
Input: 6
28-
Output: 3
29-
Explanation: The first 6 elements of magical string S is "12211" and it contains three 1's, so return 3.
30-
*/
313
public class _481 {
324

335
public static class Solution1 {
346
/**
357
* credit: https://discuss.leetcode.com/topic/74917/simple-java-solution-using-one-array-and-two-pointers
368
* Algorithm:
37-
*
9+
* <p>
3810
* 1. Create an int array a and initialize the first 3 elements with 1, 2, 2.
3911
* 2. Create two pointers head and tail. head points to the number which will be used to generate new numbers.
4012
* tail points to the next empty position to put the new number. Then keep generating new numbers until tail >= n.

0 commit comments

Comments
 (0)