Skip to content

Commit f14e453

Browse files
committed
add medium & hard
1 parent d4a800f commit f14e453

File tree

2 files changed

+129
-0
lines changed

2 files changed

+129
-0
lines changed

Hard/median_of_two_sorted_arrays.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
class Solution {
4+
5+
/**
6+
* @param Integer[] $nums1
7+
* @param Integer[] $nums2
8+
* @return Float
9+
*/
10+
function findMedianSortedArrays($nums1, $nums2) {
11+
if (count($nums1) > 1000 || count($nums2) > 1000) {
12+
return 0;
13+
}
14+
15+
$joinArr = array_merge($nums1, $nums2);
16+
sort($joinArr);
17+
$lenJoinArr = count($joinArr);
18+
19+
if ($lenJoinArr == 0 || $lenJoinArr > 2000) {
20+
return 0;
21+
}
22+
23+
$mid = $lenJoinArr / 2;
24+
if ($lenJoinArr % 2 == 1) {
25+
return floatval($joinArr[$mid]);
26+
}
27+
28+
return floatval(($joinArr[$mid-1] + $joinArr[$mid]) / 2.0);
29+
}
30+
}
31+
32+
$solution = new Solution;
33+
// print_r($solution->findMedianSortedArrays([1,3], [2]));
34+
// print_r($solution->findMedianSortedArrays([1,2], [3,4]));
35+
print_r($solution->findMedianSortedArrays([1,2,3,4,5], [6,7,8,9,10,11,12,13,14,15,16,17]));

Medium/add_two_numbers.php

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?php
2+
3+
class ListNode
4+
{
5+
public $val = 0;
6+
public $next = null;
7+
8+
function __construct($val = 0, $next = null)
9+
{
10+
$this->val = $val;
11+
$this->next = $next;
12+
}
13+
}
14+
15+
/**
16+
* Definition for a singly-linked list.
17+
* class ListNode {
18+
* public $val = 0;
19+
* public $next = null;
20+
* function __construct($val = 0, $next = null) {
21+
* $this->val = $val;
22+
* $this->next = $next;
23+
* }
24+
* }
25+
*/
26+
class Solution
27+
{
28+
29+
/**
30+
* @param ListNode $l1
31+
* @param ListNode $l2
32+
* @return ListNode
33+
*/
34+
function addTwoNumbers($l1, $l2)
35+
{
36+
$node = new ListNode();
37+
$current = $node;
38+
$carry = 0;
39+
40+
while ($l1 !== null || $l2 !== null || $carry > 0) {
41+
$v1 = $l1 !== null ? $l1->val : 0;
42+
$v2 = $l2 !== null ? $l2->val : 0;
43+
44+
$sum = $v1 + $v2 + $carry;
45+
$carry = intdiv($sum, 10);
46+
$current->next = new ListNode($sum % 10);
47+
$current = $current->next;
48+
49+
if ($l1 !== null) {
50+
$l1 = $l1->next;
51+
}
52+
53+
if ($l2 !== null) {
54+
$l2 = $l2->next;
55+
}
56+
}
57+
58+
return $node->next;
59+
}
60+
}
61+
62+
function arrayToList($arr)
63+
{
64+
$node = new ListNode();
65+
$current = $node;
66+
foreach ($arr as $val) {
67+
$current->next = new ListNode($val);
68+
$current = $current->next;
69+
}
70+
return $node->next;
71+
}
72+
73+
function listToArray($node)
74+
{
75+
$result = [];
76+
while ($node !== null) {
77+
$result[] = $node->val;
78+
$node = $node->next;
79+
}
80+
return $result;
81+
}
82+
83+
$solution = new Solution();
84+
$listTest = array(
85+
array(array(2, 4, 3), array(5, 6, 4)),
86+
array(array(9, 9, 9, 9, 9, 9, 9), array(9, 9, 9, 9)),
87+
array(array(0), array(0)),
88+
);
89+
90+
foreach ($listTest as $num) {
91+
$num1 = arrayToList($num[0]);
92+
$num2 = arrayToList($num[1]);
93+
print_r(listToArray($solution->addTwoNumbers($num1, $num2)));
94+
}

0 commit comments

Comments
 (0)