Kotlin
var transpose = { A: Array<IntArray> -> A[0].mapIndexed{ j, _ -> A.mapIndexed{ i, _ -> A[i][j] }.toIntArray() }.toTypedArray() }
Javascript
let transpose = A => A[0].map((_, j) => A.map((_, i) => A[i][j]));
/* | |
Heap Property: | |
* MinHeap: For every object x, the key of x is <= the keys of its children | |
* MaxHeap: For every object x, the key of x is >= the keys of its children | |
---------------------------------------------------------------------------------------------------- | |
Insert: |
let permutations = A => { | |
let N = A.length; | |
let perms = []; | |
let go = (i = 0) => { | |
if (i == N) { | |
perms.push([...A]); | |
return; | |
} | |
for (let k = i; k < N; ++k) { | |
[A[i], A[k]] = [A[k], A[i]]; |
fun permutations(A: IntArray): Array<IntArray> { | |
var N = A.size | |
var perms = mutableListOf<IntArray>() | |
fun go(i: Int = 0) { | |
if (i == N) { | |
perms.add(A.copyOf()) | |
return | |
} | |
for (k in i until N) { | |
A[i] = A[k].also{ A[k] = A[i] } |
/* | |
* Kotlin version of C++ equal_range via lower_bound and upper_bound | |
* | |
* Gist: https://gist.github.com/claytonjwong/2f9c3b33f8697d77a1d442006d4947d6 | |
*/ | |
fun lowerBound(A: IntArray, target: Int): Int { | |
val N = A.size | |
var i = 0 | |
var j = N |
Kotlin
var transpose = { A: Array<IntArray> -> A[0].mapIndexed{ j, _ -> A.mapIndexed{ i, _ -> A[i][j] }.toIntArray() }.toTypedArray() }
Javascript
let transpose = A => A[0].map((_, j) => A.map((_, i) => A[i][j]));
// | |
// Recursively change each node of the linked list such that next | |
// is the last node seen during a linear scan of the linked list. | |
// | |
class Solution { | |
fun reverseList(head: ListNode?): ListNode? { | |
fun go(node: ListNode? = head, last: ListNode? = null): ListNode? { | |
var next = node?.next | |
node?.next = last | |
if (next == null) |
// | |
// Recursively change each node of the linked list such that next | |
// is the last node seen during a linear scan of the linked list. | |
// | |
let reverseList = head => { | |
let go = (node = head, last = null) => { | |
let next = node.next; | |
node.next = last; | |
if (!next) | |
return node; |
# | |
# Recursively change each node of the linked list such that next | |
# is the last node seen during a linear scan of the linked list. | |
# | |
class Solution: | |
def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: | |
def go(node = head, last = None): | |
next = node.next | |
node.next = last | |
if not next: |
// | |
// Recursively change each node of the linked list such that next | |
// is the last node seen during a linear scan of the linked list. | |
// | |
class Solution { | |
public: | |
using fun = function<ListNode*(ListNode*, ListNode*)>; | |
ListNode* reverseList(ListNode* head) { | |
fun go = [&](auto node, auto last) { | |
auto next = node->next; |
template< typename T > | |
class Solution | |
{ | |
using Vector = vector< T >; | |
using Iter = typename Vector::iterator; | |
Vector go( Vector&& A ) | |
{ | |
auto N{ A.size() }; | |
if( N < 2 ) return A; |