Skip to content

Commit 8600baa

Browse files
committed
Improved tasks 620, 1309, 1392
1 parent 00369a0 commit 8600baa

File tree

4 files changed

+41
-66
lines changed

4 files changed

+41
-66
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@
470470
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
471471
|-|-|-|-|-|-
472472
| 0709 |[To Lower Case](src/main/java/g0701_0800/s0709_to_lower_case)| Easy | String | 1 | 71.74
473-
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/java/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String | 6 | 28.25
473+
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/java/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String | 0 | 100.00
474474
| 0953 |[Verifying an Alien Dictionary](src/main/java/g0901_1000/s0953_verifying_an_alien_dictionary)| Easy | Array, String, Hash_Table | 0 | 100.00
475475

476476
#### Day 10 Linked List and Tree
@@ -3768,7 +3768,7 @@
37683768
| 1395 |[Count Number of Teams](src/main/java/g1301_1400/s1395_count_number_of_teams)| Medium | Array, Dynamic_Programming, Binary_Indexed_Tree | 18 | 91.75
37693769
| 1394 |[Find Lucky Integer in an Array](src/main/java/g1301_1400/s1394_find_lucky_integer_in_an_array)| Easy | Array, Hash_Table, Counting | 2 | 82.56
37703770
| 1393 |[Capital Gain/Loss](src/main/java/g1301_1400/s1393_capital_gainloss)| Medium | LeetCode_Curated_SQL_70, Database, SQL_I_Day_9_Control_of_Flow | 428 | 92.01
3771-
| 1392 |[Longest Happy Prefix](src/main/java/g1301_1400/s1392_longest_happy_prefix)| Hard | String, Hash_Function, String_Matching, Rolling_Hash | 39 | 28.37
3771+
| 1392 |[Longest Happy Prefix](src/main/java/g1301_1400/s1392_longest_happy_prefix)| Hard | String, Hash_Function, String_Matching, Rolling_Hash | 5 | 100.00
37723772
| 1391 |[Check if There is a Valid Path in a Grid](src/main/java/g1301_1400/s1391_check_if_there_is_a_valid_path_in_a_grid)| Medium | Array, Depth_First_Search, Breadth_First_Search, Matrix, Union_Find | 14 | 85.37
37733773
| 1390 |[Four Divisors](src/main/java/g1301_1400/s1390_four_divisors)| Medium | Array, Math | 13 | 97.25
37743774
| 1389 |[Create Target Array in the Given Order](src/main/java/g1301_1400/s1389_create_target_array_in_the_given_order)| Easy | Array, Simulation | 0 | 100.00
@@ -3844,7 +3844,7 @@
38443844
| 1312 |[Minimum Insertion Steps to Make a String Palindrome](src/main/java/g1301_1400/s1312_minimum_insertion_steps_to_make_a_string_palindrome)| Hard | String, Dynamic_Programming | 25 | 85.70
38453845
| 1311 |[Get Watched Videos by Your Friends](src/main/java/g1301_1400/s1311_get_watched_videos_by_your_friends)| Medium | Array, Hash_Table, Sorting, Breadth_First_Search | 39 | 73.81
38463846
| 1310 |[XOR Queries of a Subarray](src/main/java/g1301_1400/s1310_xor_queries_of_a_subarray)| Medium | Array, Bit_Manipulation, Prefix_Sum | 3 | 68.91
3847-
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/java/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String, Programming_Skills_I_Day_9_String | 6 | 28.25
3847+
| 1309 |[Decrypt String from Alphabet to Integer Mapping](src/main/java/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping)| Easy | String, Programming_Skills_I_Day_9_String | 0 | 100.00
38483848
| 1307 |[Verbal Arithmetic Puzzle](src/main/java/g1301_1400/s1307_verbal_arithmetic_puzzle)| Hard | Array, String, Math, Backtracking | 6 | 95.74
38493849
| 1306 |[Jump Game III](src/main/java/g1301_1400/s1306_jump_game_iii)| Medium | Array, Depth_First_Search, Breadth_First_Search, Graph_Theory_I_Day_11_Breadth_First_Search, Udemy_Arrays | 2 | 96.23
38503850
| 1305 |[All Elements in Two Binary Search Trees](src/main/java/g1301_1400/s1305_all_elements_in_two_binary_search_trees)| Medium | Sorting, Depth_First_Search, Tree, Binary_Tree, Binary_Search_Tree | 25 | 63.82
@@ -4043,7 +4043,7 @@
40434043
| 1015 |[Smallest Integer Divisible by K](src/main/java/g1001_1100/s1015_smallest_integer_divisible_by_k)| Medium | Hash_Table, Math | 2 | 90.67
40444044
| 1014 |[Best Sightseeing Pair](src/main/java/g1001_1100/s1014_best_sightseeing_pair)| Medium | Array, Dynamic_Programming, Dynamic_Programming_I_Day_7 | 2 | 99.86
40454045
| 1013 |[Partition Array Into Three Parts With Equal Sum](src/main/java/g1001_1100/s1013_partition_array_into_three_parts_with_equal_sum)| Easy | Array, Greedy | 1 | 100.00
4046-
| 1012 |[Numbers With Repeated Digits](src/main/java/g1001_1100/s1012_numbers_with_repeated_digits)| Hard | Dynamic_Programming, Math | 3 | 28.17
4046+
| 1012 |[Numbers With Repeated Digits](src/main/java/g1001_1100/s1012_numbers_with_repeated_digits)| Hard | Dynamic_Programming, Math | 2 | 50.64
40474047
| 1011 |[Capacity To Ship Packages Within D Days](src/main/java/g1001_1100/s1011_capacity_to_ship_packages_within_d_days)| Medium | Array, Binary_Search | 10 | 75.31
40484048
| 1010 |[Pairs of Songs With Total Durations Divisible by 60](src/main/java/g1001_1100/s1010_pairs_of_songs_with_total_durations_divisible_by_60)| Medium | Array, Hash_Table, Counting | 4 | 64.39
40494049
| 1009 |[Complement of Base 10 Integer](src/main/java/g1001_1100/s1009_complement_of_base_10_integer)| Easy | Bit_Manipulation, Udemy_Bit_Manipulation | 1 | 41.56
@@ -4401,7 +4401,7 @@
44014401
| 0623 |[Add One Row to Tree](src/main/java/g0601_0700/s0623_add_one_row_to_tree)| Medium | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree | 0 | 100.00
44024402
| 0622 |[Design Circular Queue](src/main/java/g0601_0700/s0622_design_circular_queue)| Medium | Array, Design, Linked_List, Queue, Programming_Skills_II_Day_20 | 3 | 100.00
44034403
| 0621 |[Task Scheduler](src/main/java/g0601_0700/s0621_task_scheduler)| Medium | Array, Hash_Table, Sorting, Greedy, Heap_Priority_Queue, Counting, Level_2_Day_5_Greedy | 3 | 84.32
4404-
| 0620 |[Not Boring Movies](src/main/java/g0601_0700/s0620_not_boring_movies)| Easy | Database | 258 | 28.33
4404+
| 0620 |[Not Boring Movies](src/main/java/g0601_0700/s0620_not_boring_movies)| Easy | Database | 259 | 64.69
44054405
| 0619 |[Biggest Single Number](src/main/java/g0601_0700/s0619_biggest_single_number)| Easy | Database | 779 | 66.08
44064406
| 0617 |[Merge Two Binary Trees](src/main/java/g0601_0700/s0617_merge_two_binary_trees)| Easy | Depth_First_Search, Breadth_First_Search, Tree, Binary_Tree, Algorithm_I_Day_8_Breadth_First_Search_Depth_First_Search | 1 | 72.47
44074407
| 0611 |[Valid Triangle Number](src/main/java/g0601_0700/s0611_valid_triangle_number)| Medium | Array, Sorting, Greedy, Binary_Search, Two_Pointers, Binary_Search_II_Day_1 | 10 | 100.00

src/main/java/g0601_0700/s0620_not_boring_movies/readme.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,8 @@ The query result format is in the following example.
5959

6060
```sql
6161
# Write your MySQL query statement below
62-
SELECT *
63-
FROM cinema
64-
WHERE description != 'boring'
65-
AND ID % 2 = 1
66-
ORDER BY rating desc;
62+
SELECT id, movie, description, rating
63+
FROM Cinema
64+
WHERE description != 'boring' AND id % 2 != 0
65+
ORDER BY rating DESC;
6766
```

src/main/java/g1301_1400/s1309_decrypt_string_from_alphabet_to_integer_mapping/readme.md

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -37,53 +37,25 @@ The test cases are generated so that a unique mapping will always exist.
3737
## Solution
3838

3939
```java
40-
import java.util.HashMap;
41-
import java.util.Map;
42-
4340
public class Solution {
4441
public String freqAlphabets(String s) {
45-
Map<String, String> map = new HashMap<>();
46-
map.put("1", "a");
47-
map.put("2", "b");
48-
map.put("3", "c");
49-
map.put("4", "d");
50-
map.put("5", "e");
51-
map.put("6", "f");
52-
map.put("7", "g");
53-
map.put("8", "h");
54-
map.put("9", "i");
55-
map.put("10#", "j");
56-
map.put("11#", "k");
57-
map.put("12#", "l");
58-
map.put("13#", "m");
59-
map.put("14#", "n");
60-
map.put("15#", "o");
61-
map.put("16#", "p");
62-
map.put("17#", "q");
63-
map.put("18#", "r");
64-
map.put("19#", "s");
65-
map.put("20#", "t");
66-
map.put("21#", "u");
67-
map.put("22#", "v");
68-
map.put("23#", "w");
69-
map.put("24#", "x");
70-
map.put("25#", "y");
71-
map.put("26#", "z");
72-
StringBuilder sb = new StringBuilder();
73-
int i = 0;
74-
while (i < s.length()) {
75-
if ((Integer.parseInt("" + s.charAt(i)) == 1 || Integer.parseInt("" + s.charAt(i)) == 2)
76-
&& i + 1 < s.length()
77-
&& i + 2 < s.length()
78-
&& s.charAt(i + 2) == '#') {
79-
sb.append(map.get(s.substring(i, i + 3)));
80-
i += 3;
42+
StringBuilder builder = new StringBuilder();
43+
int i = s.length() - 1;
44+
while (i >= 0) {
45+
if (s.charAt(i) == '#') {
46+
decryptor(builder, i - 1, i - 2, s);
47+
i -= 3;
8148
} else {
82-
sb.append(map.get("" + s.charAt(i)));
83-
i++;
49+
char ch = (char) (s.charAt(i) - '0' + 96);
50+
builder.append(ch);
51+
i--;
8452
}
8553
}
86-
return sb.toString();
54+
return builder.reverse().toString();
55+
}
56+
57+
private void decryptor(StringBuilder builder, int a, int b, String s) {
58+
builder.append((char) (((s.charAt(b) - '0') * 10 + s.charAt(a) - '0') + 96));
8759
}
8860
}
8961
```

src/main/java/g1301_1400/s1392_longest_happy_prefix/readme.md

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,26 @@ Given a string `s`, return _the **longest happy prefix** of_ `s`. Return an empt
3535
```java
3636
public class Solution {
3737
public String longestPrefix(String s) {
38-
int times = 2;
39-
long prefixHash = 0;
40-
long suffixHash = 0;
41-
long multiplier = 1;
42-
long len = 0;
43-
// use some large prime as a modulo to avoid overflow errors, e.g. 10 ^ 9 + 7.
44-
long mod = 1000000007;
45-
for (int i = 0; i < s.length() - 1; i++) {
46-
prefixHash = (prefixHash * times + s.charAt(i)) % mod;
47-
suffixHash = (multiplier * s.charAt(s.length() - i - 1) + suffixHash) % mod;
48-
if (prefixHash == suffixHash) {
49-
len = (long) i + 1;
38+
char[] c = s.toCharArray();
39+
int n = c.length;
40+
int[] a = new int[n];
41+
int max = 0;
42+
int i = 1;
43+
while (i < n) {
44+
if (c[max] == c[i]) {
45+
max++;
46+
a[i] = max;
47+
i++;
48+
} else {
49+
if (max > 0) {
50+
max = a[max - 1];
51+
} else {
52+
a[i] = 0;
53+
i++;
54+
}
5055
}
51-
multiplier = multiplier * times % mod;
5256
}
53-
return s.substring(0, (int) len);
57+
return s.substring(0, a[n - 1]);
5458
}
5559
}
5660
```

0 commit comments

Comments
 (0)