Удалить узел

Нажмите, чтобы просмотреть исходный вопрос

Чтобы удалить данный узел, это означает, что тот, кто запрашивает значение для этого узла, должен получить значение следующего узла. Кроме того, следующий узел этого удаления должен быть следующим следующим узлом.

На диаграмме со следующим списком узлов мы хотим удалить узел 2.

1 -> 2 -> 3 -> 4

Мы обновляем исходный узел 2 до узла 3 и пропускаем исходный узел 3, который выдает список после удаления узла 2.

1 -> 3 — — → 4

/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} node
* @return {void} Do not return anything, modify node in-place instead.
*/
var deleteNode = function(node) {
    node.val = node.next.val;
    node.next = node.next.next;
};

такое же дерево

Нажмите, чтобы просмотреть исходный вопрос

Примечание. Мое решение недостаточно эффективно с точки зрения производительности, но я думаю, что оно довольно чистое.

Я использую рекурсию для решения проблемы, сначала для определения основных случаев, а затем рекурсивно перебираю оба дерева слева направо. Если он попадет в один false, весь результат будет false.

/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} p
* @param {TreeNode} q
* @return {boolean}
*/
 
var isSameTree = function(p, q) {
    if( p === q ) return true;
    if(!p || !q || p.val !== q.val) return false;
    return isSameTree(p.left, q.left) ? isSameTree(p.right, q.right) : false;
};

Переместить нули

Нажмите, чтобы просмотреть исходный вопрос

Здесь я создал два индекса, один из которых называется z для индексации позиции нулей, а другой — i для циклического просмотра массива nums. Они оба увеличиваются на единицу, когда видят ненулевое значение, но когда оно равно нулю, z остается в позиции и готовится поменять позицию со следующим ненулевым значением i. Продолжая делать это, он заполнит последовательную строку нулями до конца.

<!--/**
* @param {number[]} nums
* @return {void} Do not return anything, modify nums in-place instead.
*/
var moveZeroes = function(nums) {
    var z = 0;
    for(var i = 0; i

Первоначально опубликовано на https://www.loginradius.com.