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

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)

转载于:https://www.cnblogs.com/ya-cpp/p/5357487.html

LeetCode刷刷记录相关推荐

  1. LeetCode解题记录(409)——最长回文串

    LeetCode解题记录--最长回文串 题目描述 示例 题目理解 解题思路 题目描述 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比 ...

  2. LeetCode基本记录【2】// BASIC NOTES AND CODES OF LEETCODE [ 2 ]

    LeetCode基本记录[2] 19. Remove Nth Node From End of List Given a linked list, remove the nth node from t ...

  3. LeetCode基本记录【5】// BASIC NOTES AND CODES OF LEETCODE [ 5 ]

    LeetCode基本记录[5] 78. Subsets Given a set of distinct integers, nums, return all possible subsets (the ...

  4. leetcode学习记录5——53.最大子序和

    leetcode学习记录 leetcode学习记录五 最大子序和 解题思路 代码 leetcode学习记录五 最大子序和 难度:简单 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数 ...

  5. leetcode学习记录_贪心

    贪心的特点就是不断求得局部最优解 然后用局部最优解求得全局最优解 55. 跳跃游戏 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 . 数组中的每个元素代表你在该位置可以跳跃的最大长度 ...

  6. leetcode 解题记录

    一.数组 1.26.从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 ...

  7. leetcode竞赛记录-第266场周赛

    第266场周赛记录 得分排名情况 赛题分析 题一:统计字符串中的元音字符串(easy完成) 题二:所有字符串中的元音(medium未完成) 题三:分配给商店的最多商品的最小值(medium未完成) 题 ...

  8. leetcode解题记录(一)

    仅为自己的学习做记录 1.leetcode1:两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入 ...

  9. mysql——leetcode问题记录

    问题: 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | PersonId | int | | ...

  10. leetcode学习记录_二叉树_树

    二叉搜索树(二叉排序树.二叉查找树) 二叉树值一种特殊的二叉树,它要么是空树,要么满足以下条件: 若左子树存在,则左子树上的所有结点都一定小于根结点,反之,右子树的所有结点都一定大于根节点,并且除了根 ...

最新文章

  1. 【转载】有软件开发,就要有软件测试!
  2. Google AMP WebPackage 在 Webnovel 的应用
  3. 蓝桥杯练习系统习题解答-入门训练
  4. Python双版本下创建一个Scrapy(西瓜皮)项目
  5. html5语法参考图片,仿AS语法来写HTML5—第1章,显示一张图片
  6. 计算机专业词典_好书优选:实用英汉汉英计算机词典
  7. boost::ratio_multiply相关的测试程序
  8. NetCat Tutorials
  9. 开源视觉salm算法介绍
  10. P4248-[AHOI2013]差异【SAM or SA】
  11. java多线程笔记补充之 线程控制操作
  12. postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)
  13. 菜刀php教程,Weevely(php菜刀)工具使用详解
  14. 1053: [HAOI2007]反素数ant
  15. 【优化算法】混合增强灰狼优化布谷鸟搜索算法(AGWOCS)【含Matlab源码 1331期】
  16. Make the Team(匈牙利算法)
  17. 07、Flutter FFI 数组
  18. 一个小型VC项目的开发
  19. WSO2一般使用教程
  20. 植物大战僵尸海盗22困难通关

热门文章

  1. VC6.0 Dialog 如何添加 WM_ERASEBACKGROUND 消息
  2. 文档中某些特定数据查询
  3. 面向对象【林老师版】:绑定方法与非绑定方法(十七)
  4. Python-进程与线程理论基础-Day10
  5. 2.6 利用FTP上传所有文件
  6. iRecognizer号码扫描开发实录
  7. 1006 小明与隔壁老王之间不得不说的故事(简单)
  8. struct/class等内存字节对齐问题详解
  9. PHP中的的一个挺好用的函数 array_chunk
  10. Linux注册服务(chkconfig)