编程之刷题思维-java

事前声明:全文仅个人观点,因为突发奇想有编程思维一说,于是上网搜查,只可惜未发有如意答复,于是写下此文~

start
毛主席曾经说过:“没有调查,没有发言权”,那么我在网上搜索资料后大概将过程分为三阶段: 1.开始 2.继续 3.重新开始

1.开始

这里不区分你究竟是初学or似初学,都得明白至关重要的一件事件就是→审题
这是我们一生都在面对的问题,从出生开始,你就得审题,明白别人在说什么,隐喻什么,又或者在……
审题又可以分为若干步骤

  1. 初审 (判断题目大概意思)
  2. 从审 (将题目要求细分化)
  3. 终审 (留意题目有效范围)
    举个栗子:小明,老师叫你放学后留下来擦黑板.
  • 初审: 小明 老师 放学后 擦黑板

  • 从审: 1.目的人:小明 2.事情: 擦黑板 3.顺序是先放学,再擦黑板

  • 终审: 目前命令只限今天 留小明目的是擦黑板 时间是今天放学后

    再举个栗子:求1+2+3+……+100=?

  • 初审:求1到100累加的和

  • 从审: 求累加和 从1开始到100 包括1和100 每次递增1

  • 终审: 只求最终结果 是个范式

code ↓

 int sum = 0;  // 用来储存最后累加的数字
 for(int i = 1; i < 101; ++i) { // [1,2,3,……100]
 	sum += i;
 }
 System.out.println("sum="+sum); // 输出sum=5050

2.继续

继续即:在开始后你已经对规则有了一定小了解后再去解题,什么是小规则?且看下面:
如果我问你从1992年3月10日到2023年3月26日之间一共过了几天?你怎么分析?
请添加图片描述
分析如下:算天数 = ↓
算每年中占用有几天 =↓
年又也分闰年、平年 =↓
判断方法 =↓
代码细分析:
天数: 今天到明天算1天
月份:平常normal下: 1 <= month <= 12 但特殊时间要特殊处理
年份:1992 <= year <= 2023
平、闰: if (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ) 为闰年也就是2月有29天,否则就只有28天

 int days = 0; // 记录下天数
 // 19920310代表初始时间  20230326代表结束时间
 for(int startYear = 19920310; startYear <= 20230326; startYear++) {
 	int day = startYear % 100; // 取末尾两整为日
    int month = startYear / 100 % 100; // 去除末尾两整再取末尾两整为月
    int year = startYear / 10000;  // 去除末尾四整为年
    // 先将不符合时间逻辑的结束掉 符合的就执行days++

    if(month == 0 || month > 12)
    	continue;
    // 月份 1、3、5、7、8、10、12 是31天 其余除了2月都是30天
    if(day == 0 || day >31)
        continue;
    if((month == 4 || month == 6 || month == 9 || month == 11) && month > 30)
        continue;
    // 再是讨论闰、平的事情
    if((startYear % 4 == 0 && startYear % 100 != 0) || startYear % 400 == 0) { // 闰年条件
        if(month == 2 && day > 29) // 这里别忘了年份是闰年了 月份还得锁定是2月
        	continue;
     } else {
        if(month == 2 && day > 28)
        	continue;
     }
    // 要是上面那些条件都过了,那就是合法时间了 可以days++
 	days++;
 }
 System.out.println("days="+days); // 输出:days=11456

思维:将复杂的时间简单化成数字,然后排除特殊的情况天数,累加计算天数
总结:较为灵活的去使用你所知道的基本数据类型,在结合上自己的知识去排除那少数的非常情况,便是大多数下的正常情况.

3.重新开始

当然,肯定不是说从你原来的那个点开始,而是说你已经完成了那个点该做的事,现在你已经在下一个点的起点了,而你需要做的事就是继续
下面简单介绍几种常用的思维方式(这种东西就靠积累):
一、系统思维
系统性的、层次分明的去思考,要将复杂问题条例清晰化
二、辩证思维
false和true的对立,
三、逆向思维
正着或则反着推理

四、创造性思维
敢于去创新、用0、1取代everything
五、形象思维
将抽象的事情具体化

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值