zoukankan      html  css  js  c++  java
  • LeetCode刷刷记录

    一遍考研,一遍还是要刷刷题。感觉自己的时间安排的不是很好,还是要抓紧自己的日常时间,当然,也要练练刷题的手感。

    1.第一题就两重循环找到索引就OK,因为是无序的,所以就不能用二分来查找,题目中每个数的下标是定死的,所以不能排序后再二分。真是太年轻,什么都想试试(4.5)

     1 public class Solution {
     2     public int[] twoSum(int[] nums, int target) {
     3         int[] arr = new int[2];
     4         int cnt = 0;
     5         for(int i = 0; i < nums.length; ++i){
     6             for(int j = i+1; j < nums.length; ++j) {
     7                 if(nums[i] + nums[j] == target){
     8                     arr[cnt] = i;
     9                     cnt++;
    10                     arr[cnt] = j;
    11                     cnt++;
    12                 }
    13             }
    14         }
    15         return arr;
    16     }
    17 }
    View Code

    2.第二题就是个简单的java单链表,将两个链表合成一个链表。需要简单考虑一下进位问题,调试还是调试了一会儿,链表又有段时间没用过了,想了半天。

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) { val = x; }
     7  * }
     8  */
     9 public class Solution {
    10     public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    11         int t1, t2;
    12         ListNode head;
    13         t1 = (l1.val + l2.val) % 10;
    14         ListNode l = new ListNode(t1);
    15         head = l;
    16         t2 = (l1.val + l2.val) / 10;
    17         while(l1.next != null && l2.next != null){
    18             l1 = l1.next;
    19             l2 = l2.next;
    20             t1 = (l1.val + l2.val + t2) % 10;
    21             t2 = (l1.val + l2.val + t2) / 10;
    22             ListNode ltmp = new ListNode(t1);
    23             l.next = ltmp;
    24             l = l.next;
    25         }
    26         while(l1.next!=null){
    27             l1 = l1.next;
    28             t1 = (l1.val + t2) % 10;
    29             t2 = (l1.val + t2) / 10;
    30             ListNode ltmp = new ListNode(t1);
    31             l.next = ltmp;
    32             l = l.next;
    33         }
    34         while(l2.next != null) {
    35             l2 = l2.next;
    36             t1 = (l2.val + t2) % 10;
    37             t2 = (l2.val + t2) / 10;
    38             ListNode ltmp = new ListNode(t1);
    39             l.next = ltmp;
    40             l = l.next;
    41         }
    42         if(t2 != 0){
    43             ListNode ltmp = new ListNode(t2);
    44             l.next = ltmp;
    45             l = l.next;
    46         }
    47          return head;
    48     }
    49 }
    View Code

     我去,返回头看自己以前的代码,感觉昨天写的好搓啊

     1 public class Solution {
     2    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
     3        ListNode ret = new ListNode(0);
     4        ListNode cur = ret;
     5 
     6        int sum = 0;
     7        while(true) {
     8            if(l1 != null) {
     9                sum += l1.val;
    10                l1 = l1.next;
    11            }
    12            if(l2 != null) {
    13                sum += l2.val;
    14                l2 = l2.next;
    15            }
    16            cur.val = sum % 10;
    17            sum /= 10;
    18 
    19            if(l1 != null || l2 != null || sum != 0) {
    20                //cur = (cur.next = new ListNode(0));
    21                cur.next = new ListNode(0);
    22                cur = cur.next;
    23            } else {
    24                break;
    25            }
    26        }
    27        return ret;
    28    }
    29 }
    View Code

     3.第37题sudu,这个题目好吧,我猥琐的用了之前的代码,就dfs就可以

     1 package LeetCode;
     2 
     3 /**
     4  * Created by lenovo on 2016-04-07.
     5  */
     6 
     7 public class Solution {
     8     static int[][] row = new int[9][9];
     9     static int[][] col = new int[9][9];
    10     static int[][] per = new int[9][9];
    11     static int[][] map = new int[9][9];
    12     static boolean isFind = false;
    13 
    14     public void solveSudoku(char[][] board) {
    15         fill(row);
    16         fill(col);
    17         fill(per);
    18         isFind = false;
    19         int k;
    20         for(int i = 0; i < 9; ++i)
    21             for(int j = 0; j < 9; ++j){
    22                 if(board[i][j] != '.'){
    23                     k = board[i][j] - '0';
    24                     map[i][j] = k - 1;
    25                     if(k != 0){
    26                         row[i][k-1] = col[j][k-1] =
    27                                 per[(i/3)*3+(j/3)][k-1] = 1;
    28                     }
    29                 }else{
    30                     map[i][j] = -1;
    31                 }
    32             }
    33 
    34         dfs(0, 0, board);
    35     }
    36     static void fill(int[][] a){
    37         for(int i = 0; i < 9; ++i){
    38             for(int j = 0; j < 9; ++j){
    39                 a[i][j] = 0;
    40             }
    41         }
    42     }
    43     public static void dfs(int x, int y, char[][] board){
    44         int u = x * 9 + y + 1;
    45         if(x == 9){
    46             isFind = true;
    47             for(int i = 0; i < 9; ++i)
    48                 for(int j = 0; j < 9; ++j)
    49                     board[i][j] = (char)(map[i][j] + '0' + 1);
    50         }
    51         if(isFind)  return;
    52         if(map[x][y] != -1){
    53             dfs(u/9, u%9, board);
    54             return;
    55         }
    56 
    57         for(int i = 0; i < 9 && !isFind; ++i){
    58             int k = (x/3)*3 + y/3;
    59             if(row[x][i] == 0 && col[y][i] == 0 && per[k][i] == 0){
    60                 row[x][i] = col[y][i] = per[k][i] = 1;
    61                 map[x][y] = i;
    62 
    63                 dfs(u/9, u%9, board);
    64 
    65                 row[x][i] = col[y][i] = per[k][i] = 0;
    66                 map[x][y] = -1;
    67             }
    68         }
    69     }
    70 
    71     public static void main(String[] args){
    72         char[][] board = {  {'.','.','9','7','4','8','.','.','.'},
    73                             {'7','.','.','.','.','.','.','.','.'},
    74                             {'.','2','.','1','.','9','.','.','.'},
    75                             {'.','.','7','.','.','.','2','4','.'},
    76                             {'.','6','4','.','1','.','5','9','.'},
    77                             {'.','9','8','.','.','.','3','.','.'},
    78                             {'.','.','.','8','.','3','.','2','.'},
    79                             {'.','.','.','.','.','.','.','.','6'},
    80                             {'.','.','.','2','7','5','9','.','.'}};
    81 
    82         Solution s = new Solution();
    83         s.solveSudoku(board);
    84     }
    85 }
    View Code

    但是,这个题目我有疑惑,并不是算法的疑惑,而是java中static变量的疑惑。因为有过用java写面向过程的代码(好吧,是java的语法问题,关于static的,以前用一直都没有问题,然后今天就有问题了)然后好好找下,看看(4.7)

  • 相关阅读:
    java操作生成jar包 和写入jar包
    jboss配置jndi连接池
    windows 域的LDAP查询相关举例
    LDAP error Code 及解决方法
    HDU 6417
    CF1299D Around the World
    codechef Chef and The Colored Grid
    Educational Codeforces Round 82 (Rated for Div. 2)
    CF1237F Balanced Domino Placements
    CF1254E Send Tree to Charlie
  • 原文地址:https://www.cnblogs.com/ya-cpp/p/5357487.html
Copyright © 2011-2022 走看看