File tree Expand file tree Collapse file tree 4 files changed +170
-0
lines changed Expand file tree Collapse file tree 4 files changed +170
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .paula .algorithmsAndDataStructure .leetCode_83 ;
2
+
3
+ public class LeetCode_083_039 {
4
+ public ListNode deleteDuplicates (ListNode head ) {
5
+ if (head == null ) return null ;
6
+
7
+ ListNode p = head ;
8
+ ListNode q = null ;
9
+ while (p .next != null ) {
10
+ if (p .val == p .next .val ) {
11
+ if (q == null || (q != null && q .val != p .val )) {
12
+ q = p ;
13
+ }
14
+ }else {
15
+ if (q != null && q .val == p .val ) {
16
+ q .next = p .next ;
17
+ }
18
+ }
19
+ p = p .next ;
20
+ }
21
+
22
+ if (q != null && p .val == q .val && p .next == null ) {
23
+ q .next = null ;
24
+ }
25
+ return head ;
26
+ }
27
+
28
+ }
Original file line number Diff line number Diff line change
1
+ package com .paula .algorithmsAndDataStructure ;
2
+
3
+ public class LeetCode_922_039 {
4
+ public int [] sortArrayByParityII (int [] A ) {
5
+ int len = A .length ;
6
+ int i =0 ; //偶数下标
7
+ int j =i +1 ; //奇数下标
8
+ Boolean evenIndexOddValue = false ;
9
+ Boolean oddIndexEvenValue = false ;
10
+
11
+ while (i < len -1 && j < len ) {
12
+ evenIndexOddValue = isOdd (A [i ]);
13
+ oddIndexEvenValue = isEven (A [j ]);
14
+
15
+ if (!evenIndexOddValue ) i +=2 ;
16
+ if (!oddIndexEvenValue ) j +=2 ;
17
+ if (evenIndexOddValue && oddIndexEvenValue ) {
18
+ int tempVal = A [i ];
19
+ A [i ] = A [j ];
20
+ A [j ] = tempVal ;
21
+
22
+ i += 2 ;
23
+ j += 2 ;
24
+
25
+ }
26
+ }
27
+
28
+
29
+ return A ;
30
+ }
31
+
32
+ public boolean isEven (int value ) {
33
+
34
+ return value %2 == 0 ? true : false ;
35
+ }
36
+
37
+ public boolean isOdd (int value ) {
38
+
39
+ return value %2 == 1 ? true : false ;
40
+ }
41
+
42
+ }
Original file line number Diff line number Diff line change
1
+
2
+ import java .util .HashMap ;
3
+ import java .util .Map ;
4
+
5
+ /**
6
+ *
7
+ * @author Paula
8
+ *
9
+ *
10
+ */
11
+
12
+ class Solution {
13
+ private static void chechString (String s , Map <Character , Integer > smap ) {
14
+ for (int i = 0 ; i < s .length (); i ++) {
15
+ if (smap .containsKey (s .charAt (i ))) {
16
+ smap .put (s .charAt (i ), smap .get (s .charAt (i )) + 1 );
17
+ } else {
18
+ smap .put (s .charAt (i ), 1 );
19
+ }
20
+ }
21
+ }
22
+
23
+ public static boolean isAnagram (String s , String t ) {
24
+ if (s .equals (t )) {
25
+ return true ;
26
+ } else if (null == s || null == t || s .length () != t .length () || s .length () <= 0 ) {//如果长度不相等,直接返回
27
+ return false ;
28
+ }
29
+ Map <Character , Integer > smap = new HashMap <Character , Integer >();
30
+ chechString (s , smap );
31
+ for (int i = 0 ; i < t .length (); i ++) {
32
+ char tmp = t .charAt (i );
33
+ if (smap .containsKey (tmp )) {
34
+ smap .put (tmp , smap .get (tmp ) - 1 );
35
+ }
36
+ if (0 == smap .get (tmp )) {
37
+ smap .remove (tmp );
38
+ }
39
+ }
40
+
41
+ return smap .size () == 0 ;
42
+ }
43
+
44
+ public static void main (String [] args ) {
45
+ //("anagram", new HashMap<Character, Integer>());
46
+ System .out .println (isAnagram ("anagram" , "nagaram" ));
47
+ System .out .println (isAnagram ("rat" , "car" ));
48
+ }
49
+ }
Original file line number Diff line number Diff line change
1
+
2
+ /**
3
+ *
4
+ * @author Paula
5
+ *
6
+ * 执行结果:
7
+ * 执行用时 : 1 ms, 在Second Minimum Node In a Binary Tree的Java提交中击败了86.02% 的用户
8
+ * 内存消耗 : 34 MB, 在Second Minimum Node In a Binary Tree的Java提交中击败了77.61% 的用户
9
+ *
10
+ * test case:
11
+ * [2,2,5,null,null,5,7]
12
+ * [1,1,3,1,1,3,4,3,1]
13
+ * [5,8,5]
14
+ */
15
+
16
+ class Solution {
17
+ public int findSecondMinimumValue (TreeNode root ) {
18
+ if (root == null ) return -1 ;
19
+ //第二小节点值
20
+ int secondMin = -1 ;
21
+
22
+ TreeNode p = root ; //第二小的节点
23
+
24
+ //检查左节点
25
+ if (p .left != null ) {
26
+ //如果左子节点值不等于当前节点值, 则左子节点值必然大于当前节点的值
27
+ if (p .left .val != p .val ) secondMin = p .left .val ;
28
+ //如果左子节点值不等于当前节点值, 继续遍历左子节点下的分支
29
+ else secondMin = findSecondMinimumValue (p .left );
30
+ }
31
+
32
+ //检查右节点
33
+ if (p .right != null ) {
34
+ //如果右子节点值不等于当前节点值, 则右子节点值必然大于当前节点的值
35
+ if (p .right .val != p .val ) {
36
+ //对比从左子树得到的secondMin和右子节点的值
37
+ if (secondMin == -1 || (secondMin != -1 && p .right .val < secondMin ) )
38
+ secondMin = p .right .val ;
39
+
40
+ //如果右子节点值不等于当前节点值, 继续遍历右子节点下的分支
41
+ } else {
42
+ int tmp = findSecondMinimumValue (p .right );
43
+ if (tmp !=-1 && secondMin !=-1 && tmp < secondMin )
44
+ secondMin = tmp ;
45
+ }
46
+
47
+ }
48
+
49
+ return secondMin ;
50
+ }
51
+ }
You can’t perform that action at this time.
0 commit comments