File tree Expand file tree Collapse file tree 5 files changed +94
-0
lines changed
construct-binary-tree-from-preorder-and-inorder-traversal
encode-and-decode-strings Expand file tree Collapse file tree 5 files changed +94
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+ private int i , p ;
3+ public TreeNode buildTree (int [] preorder , int [] inorder ) {
4+ return builder (preorder , inorder , Integer .MIN_VALUE );
5+ }
6+
7+ private TreeNode builder (int [] preorder , int [] inorder , int stop ) {
8+ if (p >= preorder .length ) return null ;
9+ if (inorder [i ] == stop ) {
10+ i += 1 ;
11+ return null ;
12+ }
13+
14+ TreeNode node = new TreeNode (preorder [p ]);
15+ p += 1 ;
16+
17+ node .left = builder (preorder , inorder , node .val );
18+ node .right = builder (preorder , inorder , stop );
19+ return node ;
20+ }
21+ }
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public int [] countBits (int n ) {
3+ // time complexity: O(n)
4+ // space complexity: O(n)
5+ int [] output = new int [n +1 ];
6+ int num = 0 ;
7+ while (num <= n ) output [num ] = Integer .bitCount (num ++);
8+ return output ;
9+ }
10+ }
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public int numDecodings (String s ) {
3+ // time complexity: O(n)
4+ // space complexity: O(n)
5+ if (s .charAt (0 ) == '0' ) return 0 ;
6+
7+ int [] dp = new int [s .length () + 1 ];
8+ dp [0 ] = 1 ;
9+ dp [1 ] = 1 ;
10+
11+ for (int i = 2 ; i <= s .length (); i ++) {
12+ int oneDigit = Integer .parseInt (s .substring (i -1 , i ));
13+ int twoDigits = Integer .parseInt (s .substring (i -2 , i ));
14+
15+ if (oneDigit > 0 && oneDigit < 10 ) dp [i ] += dp [i -1 ];
16+ if (twoDigits >= 10 && twoDigits <= 26 ) dp [i ] += dp [i -2 ];
17+ }
18+
19+ return dp [s .length ()];
20+ }
21+ }
Original file line number Diff line number Diff line change 1+ public class Solution {
2+ // time complexity: O(n)
3+ // space complexity: O(n)
4+ Map <Integer , String > encode = new HashMap <>();
5+ /*
6+ * @param strs: a list of strings
7+ * @return: encodes a list of strings to a single string.
8+ */
9+ public String encode (List <String > strs ) {
10+ // write your code here
11+ int key = 0 ;
12+ for (String str : strs ) encode .put (key ++, str );
13+ return String .valueOf (key );
14+ }
15+
16+ /*
17+ * @param str: A string
18+ * @return: decodes a single string to a list of strings
19+ */
20+ public List <String > decode (String str ) {
21+ // write your code here
22+ List <String > output = new ArrayList <>();
23+ int decode = 0 ;
24+ while (decode < Integer .valueOf (str )) output .add (encode .get (decode ++));
25+ return output ;
26+ }
27+ }
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public boolean isAnagram (String s , String t ) {
3+ // time complexity: O(n log n)
4+ // space complexity: O(n)
5+ if (s .length () != t .length ()) return false ;
6+
7+ char [] sArr = s .toCharArray ();
8+ char [] tArr = t .toCharArray ();
9+
10+ Arrays .sort (sArr );
11+ Arrays .sort (tArr );
12+
13+ return Arrays .equals (sArr , tArr );
14+ }
15+ }
You can’t perform that action at this time.
0 commit comments