Demostrar la oferta de seguridad: 18-21 registros

, Define una función para borrar el valor de nodo de la lista de punteros de cabeza y un nodo que ser eliminado para la orden.

Cabeza de lista de nodos después de la vuelta eliminado.

Nota: esta pregunta hay cambios en comparación con el título original

Ejemplo 1:

Entrada: cabeza = [4,5,1,9], val = 5
Salida: [4,1,9]
Después de que la lista cuyo valor se le da el segundo nodo 5, a continuación, llamar a su función: Diccionario la cepa lista 4 -> 1 -> 9.
ejemplo 2:

Entrada: cabeza = [4,5,1,9], val = 1
Salida: [4,5,9]
Después de un determinado valor 1 de la lista que el tercer nodo, a continuación, llamar a su función: Diccionario la cepa lista 4 -> 5 -> 9.
 

Descripción:

Los nodos en la lista de temas para asegurar que el valor diferentes entre sí
si se utiliza el lenguaje C o C ++, no es necesario que los nodos libres o borrar se eliminan

Idea: prestar atención al primer nodo, cree un nodo falso es una forma común de resolver el problema.

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        ListNode temp=new ListNode(-1);
        temp.next=head;
        for(ListNode i=temp;i.next!=null;i=i.next){
            if(i.next.val==val){
                i.next=i.next.next;
                break;
            }
        }
        return temp.next;
    }
}

Implementar comprende una función para que coincida con '' y n '*' de expresión. modo de caracteres '' representa cualquier carácter '*' indica que el carácter anterior puede aparecer cualquier número de veces (incluyendo 0 tiempo). En este problema, el partido es un patrón general coincide con todos los caracteres de la cadena. Por ejemplo, la "AAA" modo de cuerda y "AA" y "b * AC * un" partido, pero "aa.a" y "b * un" no coinciden.

Ejemplo 1:

Entrada:
S = "AA"
p = "A"
de la salida: falsa
interpretación: "a" no puede coincidir con la cadena entera "aa".
Ejemplo 2:

Entrada:
S = "AA"
P = "A *"
de salida: true
explicación: debido a que los '*' coincide cero o representantes de lo anterior que una pluralidad de elementos, esto está en frente del elemento 'a'. De este modo, la cadena "aa" se puede considerar como 'a' se repite una vez.
Ejemplo 3:

Entrada:
S = "ab y"
p = "*".
Salida: verdadera
explicó: "*" denota cero o más partidos ( '*') de cualquier carácter ( '').
Ejemplo 4:

Entrada:
S = "AAB"
P = "C * A * B"
de salida: true
explicación: porque los '*' significa cero o más, donde 'c' es 0, 'a' se repite una vez. Por lo que puede coincidir con la cadena "AAB".
Ejemplo 5:

Entrada:
S = "Mississippi"
"MIS * ES * P *" P =
salida: a falso
S puede estar vacío, y sólo letras minúsculas az de la.
p puede estar vacío y que contenga letras minúsculas solamente a la Z, y los personajes. * e.

Ideas: String dp, prestar atención a leer cuidadosamente el título.

class Solution {
    public boolean isMatch(String s,String p){
        if (s == null || p == null)return false;
        int sLen=s.length();
        int pLen=p.length();
        boolean[][] dp = new boolean[sLen + 1][pLen + 1];
        dp[0][0] = true;//dp[i][j] 表示 s 的前 i 个是否能被 p 的前 j 个匹配
        for (int i = 0; i < pLen; i++) { // here's the p's length, not s's
                dp[0][i + 1] = p.charAt(i) == '*' && dp[0][i - 1];
        }
        for (int i = 0; i < sLen; i++) {
            for (int j = 0; j < pLen; j++) {
                //单个字符可以匹配
                if (p.charAt(j) == '.' || p.charAt(j) == s.charAt(i)) dp[i + 1][j + 1] = dp[i][j];
                //多个字符
                if (p.charAt(j) == '*') {
                    dp[i+1][j+1]=dp[i+1][j-1] || 
                    (dp[i+1][j] && (s.charAt(i)==p.charAt(j-1) || p.charAt(j-1)=='.')) ||
                    (dp[i][j+1] && (s.charAt(i)==p.charAt(j-1) || p.charAt(j-1)=='.'));
                    }
                }
            }
            return dp[sLen][pLen];
        }
}

función utilizada para determinar si una cadena representa un valor (incluyendo número entero y fraccionario) Poner en práctica. Por ejemplo, la cadena "100", "5E2", - muestra, "3,1416", "0123" y "-1E-16" el valor, pero "12e", "1a3.14", "1,2 "123". 3 "" + --5 "y" 12e + 5.4 "ninguno de ellos.

Ideas de 1: intento de captura

class Solution {
    public boolean isNumber(String s) {
        try {
            if (s.endsWith("f") || s.endsWith("F")
                || s.endsWith("D") || s.endsWith("d")) {
                return false;
            }
            Double.valueOf(s);
            return true;
        } catch (Exception exception) {
            return false;
        }
    }
}

Ideas 2: Regular

class Solution:
    def isNumber(self, s: str) -> bool:
        return bool(re.match(r' *[+-]?([0-9]+(\.[0-9]*)?|\.[0-9]+)(e[+-]?[0-9]+)? *$', s))

Introducir una matriz de enteros, para realizar una función para ajustar el orden de los números en la matriz, de manera que toda la parte impar de la mitad delantera de la matriz, incluso todo el situado en la segunda mitad de la matriz.

 

Ejemplo:

Entrada: nums = [1,2,3,4]
Salida: [1,3,2,4] 
Nota: [3,1,2,4] es una respuesta correcta.
 

consejos:

1 <= nums.length <= 50 000
1 <= nums [i] <= 10,000

Ideas: la fuga rápida y partation viaje similar

class Solution {
    public int[] exchange(int[] nums) {
        int i = 0, j = nums.length - 1, tmp;
        while(i < j) {
            while(i < j && (nums[i] & 1) == 1) i++;
            while(i < j && (nums[j] & 1) == 0) j--;
            tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }
        return nums;
    }
}

 

发布了622 篇原创文章 · 获赞 1万+ · 访问量 154万+

Supongo que te gusta

Origin blog.csdn.net/hebtu666/article/details/104757554
Recomendado
Clasificación