Giter Club home page Giter Club logo

code-challenges's Introduction

馃憢 About Me

Hello, my name is Diego Palma, and I am kind of a software developer. I am from Chile and I 鉂わ笍 open-source. I hold an M.Sc in Computer Science from University of Concepci贸n and during this masters, I worked mainly on Natural Language Processing (NLP). Actually, a product from my thesis was the paper Coherence-Based Automatic Essay Assessment.

I strongly believe that education should be available for everyone, and one of my goals is to contribute to education in the reading comprehension field. I created TRUNAJOD which is an open-source library for text-complexity assessment.

馃摣 Social Media

馃捇 Open Source Work Stats

Diego Palma github stats

code-challenges's People

Contributors

dpalmasan avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

code-challenges's Issues

Container con mayor cantidad de agua

Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of the line i is at (i, ai) and (i, 0). Find two lines, which, together with the x-axis forms a container, such that the container contains the most water.

Notice that you may not slant the container.

image

Encontrar primera y 煤ltima posici贸n de un elemento en un array ordenado

Dado un array de enteros, ordenado en forma creciente, encontrar la posici贸n inicial y final de un valor dado.

Si el valor no se encuentra en el array, retornar [-1, -1].

Se debe escribir un algoritmo que tenga una complejidad en tiempo de ejecuci贸n de O(log n)

Ejemplo 1:

Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]

Ejemplo 2:

Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]

Ejemplo 3:

Input: nums = [], target = 0
Output: [-1,-1]

Camino m谩s corto en una matriz binaria

Given an n x n binary matrix grid, return the length of the shortest clear path in the matrix. If there is no clear path, return -1.

A clear path in a binary matrix is a path from the top-left cell (i.e., (0, 0)) to the bottom-right cell (i.e., (n - 1, n - 1)) such that:

All the visited cells of the path are 0.
All the adjacent cells of the path are 8-directionally connected (i.e., they are different and they share an edge or a corner).
The length of a clear path is the number of visited cells of this path.

Ejemplo:

image

Encontrar la posici贸n inicial y final de un elemento en un array ordenado

Dado un array de enteros ordenados de forma ascendente, encontrar la posici贸n inicial y final de un valor dado. Si el valor no se encuentra en el array, retornar [-1, 1]. El algoritmo debe ser de complejidad O(log n) en tiempo de ejecuci贸n.

Ejemplo 1:

Entrada: nums = [5,7,7,8,8,10], target = 8
Salida: [3,4]

Ejemplo 2:

Entrada: nums = [5,7,7,8,8,10], target = 6
Salida: [-1,-1]

Distancia de Edici贸n (Edit Distance) - Distancia de una edici贸n

Escriba una funci贸n con la siguiente firma bool oneEditApart(string s1, string s2). La funci贸n debe retornar true si con una sola edici贸n el string s1/s2 puede ser transformado a s2/s1. Una edici贸n consiste en:

  • Insertar un caracter en cualquier posici贸n del string
  • Eliminar un caracter
  • Reemplazar un caracter

Ejemplos:

OneEditApart("cat", "dog") = false
OneEditApart("cat", "cats") = true
OneEditApart("cat", "cut") = true
OneEditApart("cat", "cast") = true
OneEditApart("cat", "at") = true
OneEditApart("cat", "act") = false

Tama帽o m铆nimo de subarray tal que la suma sea `>= K`

Given an array of positive integers nums and a positive integer target, return the minimal length of a contiguous subarray [numsl, numsl+1, ..., numsr-1, numsr] of which the sum is greater than or equal to target. If there is no such subarray, return 0 instead.

Limpiar im谩genes y subirlas al gist

Inicialmente, hab铆a puesto im谩genes dentro del repo, pero decid铆 alojarlas en un gist para no ensuciar el repo. Tengo que mover las im谩genes que a煤n existen, al gist.

Nodos "Buenos" en un 谩rbol binario

Dada la ra铆z de un 谩rbol binario, se dice que un nodo X en el 谩rbol es "bueno" si en el camino desde la ra铆z hasta X no hay nodos que tengan un valor mayor que el que tenga X.

Se pide crear una funci贸n que dada la ra铆z de un 谩rbol binario, retorne la cantidad de nodos "buenos".

Ejemplo 1

image

Salida: 4
Explicaci贸n: Los nodos en azul son "buenos".
La ra铆z del 谩rbol, (nodo (3)) siempre es un nodo "bueno"
Nodo 4 -> (3,4) Es el valor m谩ximo visto empezando desde la ra铆z.
Nodo 5 -> (3,4,5) Es el valor m谩ximo en el camino
Node 3 -> (3,1,3) idem

Ejemplo 2

image

Salida: 3
Explicaci贸n: Nodo 2 -> (3, 3, 2) no es bueno porque "3" es mayor que 2.

Ejemplo 3

脕rbol con 1 solo nodo:

Salida: 1
Explicaci贸n: La ra铆z siempre es un nodo "bueno"

Regiones rodeadas

Given an m x n matrix board containing 'X' and 'O', capture all regions that are 4-directionally surrounded by 'X'.

A region is captured by flipping all 'O's into 'X's in that surrounded region.

Suma de las diferencias absolutas en un array ordenado

Se tiene un array nums ordenado de forma no decreciente.

Construya y retorne un array de enteros de la misma longitud que nums, de tal forma que cada elemento result[i] es igual a la suma de las diferencias absolutas entre nums[i] y el resto de los elementos de nums.

En otras palabras, result[i] se calcula como sum(|nums[i]-nums[j]|) donde 0 <= j < nums.length && j != i (indexado desde 0).

Input: nums = [2,3,5]
Output: [4,3,5]

Explicaci贸n:

result[0] = |2-2| + |2-3| + |2-5| = 0 + 1 + 3 = 4,
result[1] = |3-2| + |3-3| + |3-5| = 1 + 0 + 2 = 3,
result[2] = |5-2| + |5-3| + |5-5| = 3 + 2 + 0 = 5.

B煤squeda en array rotado y ordenado

Se tiene un array de enteros nums ordenados en forma ascendente (todos los valores del array son distintos)

Antes de llegar a la funci贸n, el array nums est谩 posiblemente rotado en un valor k desconocido (1 <= k <= nums.size), de manera que el array resultante es [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]. Por ejemplo, el array [0,1,2,4,5,6,7] podr铆a ser rotado 4 veces y quedar como [4,5,6,7,0,1,2].

Dado un array nums que podr铆a estar rotado, y un valor a buscar, retornar el 铆ndice (posici贸n) del valor en nums, o -1 si el valor no se encuentra en nums.

La soluci贸n debe tener una complejidad en tiempo de ejecuci贸n de O(log n)

Ejemplo 1:

Input: nums = [4,5,6,7,0,1,2], target = 0
Output: 4

Ejemplo 2:

Input: nums = [4,5,6,7,0,1,2], target = 3
Output: -1

Secuencia Look and Say

Implemente una funci贸n que imprima en pantalla la secuencia Look and Say, hasta un t茅rmino n:

1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211

Recorrido Zig-Zag en un 脕rbol Binario

Dada la ra铆z de un 谩rbol binario, retorne el recorrido en orden zig-zag de sus nodos (es decir, de izquierda a derecha, luego de derecha a izquierda y as铆 hasta recorrer todos los nodos alternando entre niveles).

Ejemplo:

image

Entrada: ra铆z (nodo con valor 3)
Salida: [[3],[20,9],[15,7]]

Como referencia, la clase nodo puede definirse como:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

Creando punteros hacia la derecha en cada nodo

Dado un 谩rbol binario:

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

Crear cada puntero para que apunte al nodo que tenga m谩s pr贸ximo a la derecha. Si no hay un nodo a la derecha, el puntero next debe apuntar a NULL.

Inicialmente, todos los punteros a next est谩n inicializados como NULL.

Ejemplo 1:

image

B煤squeda de palabras

Dada una matriz board de mxn donde cada celda es una letra, y una palabra word, cree un algoritmo que retorne true si la palabra se puede encontrar dentro de la matriz.

La palabra debe poder formarse por letras que se encuentren adyacentes, esto es, que se encuentren en la vecindad horizontal o vertical de una celda dada (no en diagonal). La misma celda, no puede usarse m谩s de una vez.

Ejemplo:

image

Entrada: board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
Salida: true

image

Entrada: board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
Salida: false

脕rea m谩xima de una isla

Se tiene una grilla de mxn que contiene 0's y 1's. Se define como una isla a un conjunto de 1's conectados ya sea horizontal o verticalmente. Se puede asumir que fuera de los l铆mites, s贸lo hay agua.

El 谩rea de una isla es el n煤mero de celdas cuyo valor es 1.

El objetivo es retornar el 谩rea m谩xima de una isla dada una grilla. Si no hay islas, retornar 0.

Ejemplo 1

image

Entrada: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Salida: 6

Ejemplo 2

Input: grid = [[0,0,0,0,0,0,0,0]]
Output: 0

Remover duplicados en una lista ordenada

Dado el primer elemento de una lista enlazada ordenada, eliminar todos los nodos que tienen valores duplicados, dejando 煤nicamente los nodos con valores distintos de la lista original. Retornar la lista ordenada

Ejemplo 1:

image

Ejemplo 2:

image

B煤squeda en una matriz 2D

Escriba un algoritmo eficiente que b煤sque un valor dado en una matriz de m x n. La matriz tiene las siguientes propiedades:

  • Los enteros de cada fila estan ordenados desde la izquierda hacia la derecha en orden ascendente.
  • El primer entero de cada fila es mayor que el 煤ltimo entero de la fila anterior

Ejemplo:

image

Problema Matriz en Espiral

Encuentre el patr贸n de los siguientes ejemplos y cree una funci贸n con la siguiente firma (n: int) -> int[][], donde n es la dimensi贸n del array 2D de salida (nxn):

n = 3
123
894
765

n = 4
01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07

n = 8
1 2 3 4 5 6 7 8
28 29 30 31 32 33 34 9
27 48 49 50 51 52 35 10
26 47 60 61 62 53 36 11
25 46 59 64 63 54 37 12
24 45 58 57 56 55 38 13
23 44 43 42 41 40 39 14
22 21 20 19 18 17 16 15

Sub-string de largo m铆nimo

Se tienen dos strings s1 y s2. Se puede escoger cualquier substring de s1 y reorganizar los caracteres del substring escogido. Calcule la longitud m铆nima del substring de s1 tal que s2 es un substring del substring escogido.

La funci贸n a implementar debe tener la siguiente firma:

int minLengthSubstring(String s1, String s2)

Entrada: s1 y s2 son dos strings de largo >= 1, que pueden contener hasta 1.000.000 de caracteres.

Salida: El largo m铆nimo del substring de s, si no es posible, retornar -1.

Ejemplo:

s1 = "dcbefebce"
s2 = "fd"

Salida = 5

Explicaci贸n:

El substring "dcbef" se puede reorganizar de forma tal de contener el substring "fd", por ejemplo: "cfdeb", "cefdb", etc. Por lo tanto la longitud m铆nima requerida es 5.

M谩xima suma en un subarray

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Dado un array de enteros (nums), encontrar el subarray contiguo (que tenga al menos un n煤mero) que tenga la m谩xima suma y retornar dicha suma.

Ejemplo:

Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explicaci贸n: [4,-1,2,1] tiene la m谩xima suma = 6.

Permutaci贸n en string

Dados dos strings s1 y s2, retornar true si s2 contiene una permutaci贸n de s1, o false en caso contrario. En otras palabras, retornar true si una permutaci贸n de s1 es un substring de s2.

Ejemplos:

Entrada: s1 = "ab", s2 = "eidbaooo"
Salida: true
Explicaci贸n: s2 contiene una permutaci贸n de s1 ("ba").
Entrada: s1 = "ab", s2 = "eidboaoo"
Salida: false

Restricciones:

  • 1 <= s1.length, s2.length <= 104
  • s1 y s2 contienen el siguiente conjunto de caracteres: abcdefghijklmnopqrstuvwxyz

Rotar un array `k` veces hacia la derecha

Dado un array, rote el array hacia la derecha k pasos, donde k es un entero positivo.

Ejemplo 1

Entrada: nums = [1,2,3,4,5,6,7], k = 3
Salida: [5,6,7,1,2,3,4]
Explicaci贸n:
Rotar 1 paso hacia la derecha: [7,1,2,3,4,5,6]
Rotar 2 pasos hacia la derecha: [6,7,1,2,3,4,5]
Rotar 3 pasos hacia la derecha: [5,6,7,1,2,3,4]

Ejemplo 2

Entrada: nums = [-1,-100,3,99], k = 2
Salida: [3,99,-1,-100]
Explicaci贸n: 
Rotar 1 paso hacia la derecha: [99,-1,-100,3]
Rotar 2 pasos hacia la derecha: [3,99,-1,-100]

Mover ceros

Dado un array nums, mover todos los 0s de nums hacia la derecha, manteniendo el orden relativo de los elementos de nums.

Ejemplo 1:

Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]

Ejemplo 2:

Input: nums = [0]
Output: [0]

Preguntas de seguimiento:

  • 驴Se puede hacer in place? (es decir, O(1) en memoria?
  • 驴Cu谩l es el n煤mero de operaciones 贸ptimas que se puede llegar a tener?

Llenado de Imagen

Una imagen se representa como una grilla m x n enteros, donde cada celda image[i][j] representa el valor del pixel (i, j) en la imagen.

Se te proporcionan tres enteros, sr, sc y newColor. El objetivo es hacer un llenado de la imagen comenzando por el pixel image[sr][sc].

Para hacer un llenado, se considera el pixel inicial y todos los pixeles colindantes a este (arriba, abajo, izquierda y derecha) que tengan el mismo color que el pixel inicial, y as铆 sucesivamente con el resto de los pixeles colindantes al resto de los pixeles. Posteriormente, se debe reemplazar el color de los pixeles mencionados a newColor.

Retornar la imagen modificada despu茅s del proceso de llenado.

Ejemplo 1

image

Entrada: image = [[1,1,1],[1,1,0],[1,0,1]], sr = 1, sc = 1, newColor = 2
Salida: [[2,2,2],[2,2,0],[2,0,1]]
Explicaci贸n: Desde el centro de la imagen `(sr, sc) = (1, 1)` (pixel rojo), todos los pixeles conectados son del mismo color que el pixel inicial (pixeles azules), por lo tanto se colorean con el color `newColor`.

Ejemplo 2:

Entrada: image = [[0,0,0],[0,0,0]], sr = 0, sc = 0, newColor = 2
Salida: [[2,2,2],[2,2,2]]

Remover el n-茅simo elemento desde el final de una lista enlazada

Dado el primer elemento de una lista (head), remover el n-茅simo elemento de la lista empezando la cuenta desde el final y retornar el primer elemento de la lista (head).

Ejemplos:

image

Para definir la lista, considerar la siguiente estructura:

class ListNode:
    val: int
    next: ListNode

Por ejemplo, en python:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
Entrada: [1, 2, 3, 4, 5], head = 1, n = 2
Salida: [1, 2, 3, 5]
Entrada: [1], head = 1, n = 1
Output: []

Restricciones:

El n煤mero de nodos de la lista es sz

  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    馃枛 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 馃搳馃搱馃帀

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google 鉂わ笍 Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.